12. 게시글작성 Controller , Mapper
bbs.BoardController.java
Model을 메소드 인자로 사용하여 모델설정 역할. req.setAttribute("이름",값)
package com.sp.bbs;
@Controller("bbs.boardController")
public class BoardController {
@Autowired
private BoardService service;
@Autowired
private MyUtil myUtil;
//@RequestMapping 어노테이션을 사용할 경우, MultiActionController와 같이 한 개의 컨트롤러에서 다수의 요청을 처리.
//@RequestMapping의 value형태의 url이 들어오면 해당 method를 호출한다.
@RequestMapping(value="/bbs/created",method=RequestMethod.GET)
public String createdForm(Model model) throws Exception {
model.addAttribute("mode","created");
return "bbs/created";
}
@RequestMapping(value="/bbs/created", method=RequestMethod.POST)
public String createdSubmit(Board dto, HttpServletRequest req)throws Exception{
dto.setIpAddr(req.getRemoteAddr());
service.insertBoard(dto);
return "redirect:/bbs/list";
}
}
DB에 데이터를 저장하기 위한 bbsMapper.xml 파일 수정
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="bbs">
<insert id="insertBoard" parameterType="com.sp.bbs.Board">
INSERT INTO bbs (num, name, pwd, subject, content, ipAddr) VALUES(
bbs_seq.NEXTVAL, #{name},#{pwd},#{subject},#{content},#{ipAddr})
</insert>
</mapper>
휴.......이제 서버 실행 후 게시글을 작성해서 db에 들어가는지 확인 해 보자.
아마 들어갈 것임
'WEB > 게시판구현_springMvc2+mybatis' 카테고리의 다른 글
11.게시글작성 DTO, Service (0) | 2017.04.12 |
---|---|
9. 사용자 생성 및 테이블 작성 (0) | 2017.04.12 |
8. 공용 클래스 작성 Myutil.java (0) | 2017.04.12 |
7. 공용 클래스 작성 - commonDAo (0) | 2017.04.12 |
6. 마이바티스 설정 mybatis-config, mybatis-context, mapper (0) | 2017.04.12 |
11.게시글작성 DTO, Service
- com/sp/bbs/Board.java ( DTO 클래스 )
public class Board {
private int listNum, num;
private String name,pwd,subject,content,ipAddr,created;
private int hitCount;
getter setter 작성.
- com/sp/bbs/BoardService.java - 인터페이스 작성
package com.sp.bbs;
import java.util.List;
import java.util.Map;
public interface BoardService {
public int insertBoard(Board dto);
public List<Board> listBoard(Map<String, Object> map);
public int dataCount(Map<String, Object> map);
public Board readBoard(int num);
public int updateHitCount(int num);
public Board preReadBoard(Map<String,Object> map);
public Board nextReadBoard(Map<String,Object> map);
public int updateBoard(Board dto);
public int deleteBoard(int num);
}
- com/sp/bbs/BoardServiceImpl.java - 인터페이스 구현. 클래스
어노테이션 빼먹지 않도록 주의한다.
@Autowired 타입에 의한 의존관계 자동설정
동일한 타입이 둘 이상인 경우
@Autowired
@Qualifier("bbs.boardService")
import java.util.List;
import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.sp.common.dao.CommonDAO;
@Service("bbs.boardService")
public class BoardServiceImpl implements BoardService {
@Autowired
private CommonDAO dao;
@Override
public int insertBoard(Board dto) {
int result=0;
try {
//최대값을 이용하여 게시물 번호를 작성하는 경우
//int maxNum = dao.getIntValue("bbs.numMax")
//dto.setNum(maxNum+1);
result=dao.insertData("bbs.insertBoard", dto);
} catch (Exception e) {
// TODO: handle exception
}
return result;
}
//기타 클래스 생략 //
}
//commondao의 insertdate를 사용.
'WEB > 게시판구현_springMvc2+mybatis' 카테고리의 다른 글
12. 게시글작성 Controller , Mapper (0) | 2017.04.12 |
---|---|
9. 사용자 생성 및 테이블 작성 (0) | 2017.04.12 |
8. 공용 클래스 작성 Myutil.java (0) | 2017.04.12 |
7. 공용 클래스 작성 - commonDAo (0) | 2017.04.12 |
6. 마이바티스 설정 mybatis-config, mybatis-context, mapper (0) | 2017.04.12 |
9. 사용자 생성 및 테이블 작성
- 사용자생성 - 오라클 DB
--1 사용자를 생성한다 이름은 board1으로.비번은 java$!
CREATE USER board1 IDENTIFIED BY "java$!";
--2 사용자에게 CONN 및 테이블스페이스를 사용할 권한 부여
GRANT CONNECT, RESOURCE TO board1;
--3 테이블스페이스 변경
ALTER USER board1 DEFAULT TABLESPACE USERS;
--4
ALTER USER board1 TEMPORARY TABLESPACE TEMP;
- 테이블생성
게시판 테이블이름은 bbs로.
ip주소와 비밀번호를 이용하는 비회원제 게시판이다.
여러가지 방법이 있겠지만 일단 가장 기초적으로 ㄱㄱ
CREATE TABLE bbs (
num NUMBER NOT NULL
,name VARCHAR2(30) NOT NULL
,pwd VARCHAR2(50)
,subject VARCHAR2(255) NOT NULL
,content VARCHAR2(4000) NOT NULL
,ipAddr VARCHAR2(50) NOT NULL
,hitCount NUMBER DEFAULT 0
,created DATE DEFAULT SYSDATE
,CONSTRAINT pk_bbs_num PRIMARY KEY(num)
);
- 시퀀스 생성
기본키 num값을 위한 시퀀스 설정
시퀀스이름은 bbs_seq로.
1씩증가하며 1부터 시작한다.
CREATE SEQUENCE bbs_seq
INCREMENT BY 1
START WITH 1
NOMAXVALUE NOCYCLE NOCACHE;
SELECT * FROM seq;
참고
NOMAXVALUE : 오름차순 최대 10의 27승 까지, 내림차순 -1 까지 생성됨.
NOCACHE : 시퀀스를 메모리에 할당하여 사용하지 않음.
NOCYCLE : 해당 시퀀스가 최대값에 도달해도 다시 생성하지 않는다.[DEFAULT]
'WEB > 게시판구현_springMvc2+mybatis' 카테고리의 다른 글
12. 게시글작성 Controller , Mapper (0) | 2017.04.12 |
---|---|
11.게시글작성 DTO, Service (0) | 2017.04.12 |
8. 공용 클래스 작성 Myutil.java (0) | 2017.04.12 |
7. 공용 클래스 작성 - commonDAo (0) | 2017.04.12 |
6. 마이바티스 설정 mybatis-config, mybatis-context, mapper (0) | 2017.04.12 |
8. 공용 클래스 작성 Myutil.java
myutil.java - 페이징 처리 , 바로가기페이지 구현 등.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 | package com.sp.common; import java.util.ArrayList; import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; import org.springframework.stereotype.Service; @Service("myUtil") public class MyUtil { //******************************************** // 총페이지 수 구하기 public int pageCount(int numPerPage, int dataCount) { int pageCount=0; if(dataCount > 0) { if(dataCount % numPerPage == 0) pageCount=dataCount/numPerPage; else pageCount=dataCount/numPerPage+1; } return pageCount; } //******************************************** // 페이징(paging) 처리(GET 방식) public String paging(int current_page, int total_page, String list_url) { StringBuffer sb=new StringBuffer(); int numPerBlock=10; int currentPageSetup; int n, page; if(current_page<1 || total_page < 1) return ""; if(list_url.indexOf("?")!=-1) list_url+="&"; else list_url+="?"; // currentPageSetup : 표시할첫페이지-1 currentPageSetup=(current_page/numPerBlock)*numPerBlock; if(current_page%numPerBlock==0) currentPageSetup=currentPageSetup-numPerBlock; sb.append("<style type='text/css'>"); sb.append("#paginate {clear:both;font:12px 돋움,Dotum,굴림,Gulim,AppleGothic;padding:15px 0px 0px 0px;text-align:center;height:28px;white-space:nowrap;}"); sb.append("#paginate a {border:1px solid #ccc;height:28px;color:#000000;text-decoration:none;padding:4px 7px 4px 7px;margin-left:3px;line-height:normal;vertical-align:middle;outline:none; select-dummy: expression(this.hideFocus=true);}"); sb.append("#paginate a:hover, a:active {border:1px solid #ccc;color:#6771ff;vertical-align:middle; line-height:normal;}"); sb.append("#paginate .curBox {border:1px solid #e28d8d; background: #fff; color:#cb3536; font-weight:bold;height:28px;padding:4px 7px 4px 7px;margin-left:3px;line-height:normal;vertical-align:middle;}"); sb.append("#paginate .numBox {border:1px solid #ccc;height:28px;font-weight:bold;text-decoration:none;padding:4px 7px 4px 7px;margin-left:3px;line-height:normal;vertical-align:middle;}"); sb.append("</style>"); sb.append("<div id='paginate'>"); // 처음페이지, 이전(10페이지 전) n=current_page-numPerBlock; if(total_page > numPerBlock && currentPageSetup > 0) { sb.append("<a href='"+list_url+"page=1'>처음</a>"); sb.append("<a href='"+list_url+"page="+n+"'>이전</a>"); } // 바로가기 page=currentPageSetup+1; while(page<=total_page && page <=(currentPageSetup+numPerBlock)) { if(page==current_page) { sb.append("<span class='curBox'>"+page+"</span>"); } else { sb.append("<a href='"+list_url+"page="+page+"' class='numBox'>"+page+"</a>"); } page++; } // 다음(10페이지 후), 마지막페이지 n=current_page+numPerBlock; if(n>total_page) n=total_page; if(total_page-currentPageSetup>numPerBlock) { sb.append("<a href='"+list_url+"page="+n+"'>다음</a>"); sb.append("<a href='"+list_url+"page="+total_page+"'>끝</a>"); } sb.append("</div>"); return sb.toString(); } //******************************************** // javascript 페이지 처리(javascript listPage() 함수 호출) public String paging(int current_page, int total_page) { if(current_page < 1 || total_page < 1) return ""; int numPerBlock = 10; // 리스트에 나타낼 페이지 수 int currentPageSetUp; int n; int page; StringBuffer sb=new StringBuffer(); // 표시할 첫 페이지 currentPageSetUp = (current_page / numPerBlock) * numPerBlock; if (current_page % numPerBlock == 0) currentPageSetUp = currentPageSetUp - numPerBlock; sb.append("<style type='text/css'>"); sb.append("#paginate {clear:both;font:12px 돋움,Dotum,굴림,Gulim,AppleGothic;padding:15px 0px 0px 0px;text-align:center;height:28px;white-space:nowrap;}"); sb.append("#paginate a {border:1px solid #ccc;height:28px;color:#000000;text-decoration:none;padding:4px 7px 4px 7px;margin-left:3px;line-height:normal;vertical-align:middle;outline:none; select-dummy: expression(this.hideFocus=true);}"); sb.append("#paginate a:hover, a:active {border:1px solid #ccc;color:#6771ff;vertical-align:middle; line-height:normal;}"); sb.append("#paginate .curBox {border:1px solid #e28d8d; background: #fff; color:#cb3536; font-weight:bold;height:28px;padding:4px 7px 4px 7px;margin-left:3px;line-height:normal;vertical-align:middle;}"); sb.append("#paginate .numBox {border:1px solid #ccc;height:28px;font-weight:bold;text-decoration:none;padding:4px 7px 4px 7px;margin-left:3px;line-height:normal;vertical-align:middle;}"); sb.append("</style>"); sb.append("<div id='paginate'>"); // 처음페이지, 이전(10페이지 전) n = current_page - numPerBlock; if ((total_page > numPerBlock) && (currentPageSetUp > 0)) { sb.append("<a onclick='listPage(1);'>처음</a>"); sb.append("<a onclick='listPage("+n+");'>이전</a>"); } // 바로가기 페이지 구현 page = currentPageSetUp + 1; while((page <= total_page) && (page <= currentPageSetUp + numPerBlock)) { if(page == current_page) { sb.append("<span class='curBox'>"+page+"</span>"); } else { sb.append("<a onclick='listPage("+page+");' class='numBox'>"+page+"</a>"); } page++; } // 다음(10페이지 후), 마지막 페이지 n = current_page + numPerBlock; if(n>total_page) n=total_page; if (total_page - currentPageSetUp > numPerBlock) { sb.append("<a onclick='listPage("+n+");'>다음</a>"); sb.append("<a onclick='listPage("+total_page+");'>끝</a>"); } sb.append("</div>"); return sb.toString(); } //******************************************** // javascript 페이지 처리(javascript 지정 함수 호출, methodName:호출할 스크립트 함수명) public String pagingMethod(int current_page, int total_page, String methodName) { if(current_page < 1 || total_page < 1) return ""; int numPerBlock = 10; // 리스트에 나타낼 페이지 수 int currentPageSetUp; int n; int page; StringBuffer sb=new StringBuffer(); // 표시할 첫 페이지 currentPageSetUp = (current_page / numPerBlock) * numPerBlock; if (current_page % numPerBlock == 0) currentPageSetUp = currentPageSetUp - numPerBlock; sb.append("<style type='text/css'>"); sb.append("#paginate {clear:both;font:12px 돋움,Dotum,굴림,Gulim,AppleGothic;padding:15px 0px 0px 0px;text-align:center;height:28px;white-space:nowrap;}"); sb.append("#paginate a {border:1px solid #ccc;height:28px;color:#000000;text-decoration:none;padding:4px 7px 4px 7px;margin-left:3px;line-height:normal;vertical-align:middle;outline:none; select-dummy: expression(this.hideFocus=true);}"); sb.append("#paginate a:hover, a:active {border:1px solid #ccc;color:#6771ff;vertical-align:middle; line-height:normal;}"); sb.append("#paginate .curBox {border:1px solid #e28d8d; background: #fff; color:#cb3536; font-weight:bold;height:28px;padding:4px 7px 4px 7px;margin-left:3px;line-height:normal;vertical-align:middle;}"); sb.append("#paginate .numBox {border:1px solid #ccc;height:28px;font-weight:bold;text-decoration:none;padding:4px 7px 4px 7px;margin-left:3px;line-height:normal;vertical-align:middle;}"); sb.append("</style>"); sb.append("<div id='paginate'>"); // 처음페이지, 이전(10페이지 전) n = current_page - numPerBlock; if ((total_page > numPerBlock) && (currentPageSetUp > 0)) { sb.append("<a onclick='"+methodName+"(1);'>처음</a>"); sb.append("<a onclick='"+methodName+"("+n+");'>이전</a>"); } // 바로가기 페이지 구현 page = currentPageSetUp + 1; while((page <= total_page) && (page <= currentPageSetUp + numPerBlock)) { if(page == current_page) { sb.append("<span class='curBox'>"+page+"</span>"); } else { sb.append("<a onclick='"+methodName+"("+page+");' class='numBox'>"+page+"</a>"); } page++; } // 다음(10페이지 후), 마지막 페이지 n = current_page + numPerBlock; if(n>total_page) n=total_page; if (total_page - currentPageSetUp > numPerBlock) { sb.append("<a onclick='"+methodName+"("+n+");'>다음</a>"); sb.append("<a onclick='"+methodName+"("+total_page+");'>끝</a>"); } sb.append("</div>"); return sb.toString(); } //******************************************** // HTML 태그 제거 public String removeHtmlTag(String str) { if(str==null||str.length()==0) return ""; String regex="<(/)?([a-zA-Z]*)(\\s[a-zA-Z]*=[^>]*)?(\\s)*(/)?>"; String result=str.replaceAll(regex, ""); return result; } //******************************************** // HTML 문서의 img 태그 src 속성값 추출 public List<String> getImgSrc(String html) { List<String> result = new ArrayList<String>(); if(html==null||html.length()==0) return result; String regex="<img[^>]*src=[\"']?([^>\"']+)[\"']?[^>]*>"; Pattern nonValidPattern = Pattern.compile(regex); Matcher matcher = nonValidPattern.matcher(html); while (matcher.find()) { result.add(matcher.group(1)); } return result; } //******************************************** // 특수문자를 HTML 문자로 변경 public String escape(String str) { if(str==null||str.length()==0) return ""; StringBuilder builder = new StringBuilder((int)(str.length() * 1.2f)); for (int i = 0; i < str.length(); i++) { char c = str.charAt(i); switch (c) { case '<': builder.append("<"); break; case '>': builder.append(">"); break; case '&': builder.append("&"); break; case '\"': builder.append("""); break; default: builder.append(c); } } return builder.toString(); } //******************************************** // 특수문자를 HTML 문자로 변경 및 엔터를 <br>로 변경 public String htmlSymbols(String str) { if(str==null||str.length()==0) return ""; str=str.replaceAll("&", "&"); str=str.replaceAll("\"", """); str=str.replaceAll(">", ">"); str=str.replaceAll("<", "<"); str=str.replaceAll(" ", " "); str=str.replaceAll("\n", "<br>"); return str; } //******************************************** // 문자열의 내용중 원하는 문자열을 다른 문자열로 변환 // String str = replaceAll(str, "\n", "<br>"); // 엔터를 <br>로 변환 public String replaceAll(String str, String oldStr, String newStr) throws Exception { if(str == null) return ""; Pattern p = Pattern.compile(oldStr); // 입력 문자열과 함께 매쳐 클래스 생성 Matcher m = p.matcher(str); StringBuffer sb = new StringBuffer(); // 패턴과 일치하는 문자열을 newStr 로 교체해가며 새로운 문자열을 만든다. while(m.find()) { m.appendReplacement(sb, newStr); } // 나머지 부분을 새로운 문자열 끝에 덫 붙인다. m.appendTail(sb); return sb.toString(); } //******************************************** // E-Mail 검사 public boolean isValidEmail(String email) { if (email==null) return false; boolean b = Pattern.matches( "[\\w\\~\\-\\.]+@[\\w\\~\\-]+(\\.[\\w\\~\\-]+)+", email.trim()); return b; } //******************************************** // NULL 인 경우 ""로 public String checkNull(String str) { String strTmp; if (str == null) strTmp = ""; else strTmp = str; return strTmp; } } |
'WEB > 게시판구현_springMvc2+mybatis' 카테고리의 다른 글
11.게시글작성 DTO, Service (0) | 2017.04.12 |
---|---|
9. 사용자 생성 및 테이블 작성 (0) | 2017.04.12 |
7. 공용 클래스 작성 - commonDAo (0) | 2017.04.12 |
6. 마이바티스 설정 mybatis-config, mybatis-context, mapper (0) | 2017.04.12 |
5. mvc-config.xml ,application-config 설정 (0) | 2017.04.12 |
7. 공용 클래스 작성 - commonDAo
공용으로 쓰일 dao클래스를 작성한다
CommonDAO.java - 인터페이스
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | package com.sp.common.dao; import java.util.List; import java.util.Map; public interface CommonDAO { public int insertData(String id, Object value) throws Exception; public int updateData(String id, Object pData) throws Exception; public int updateData(String id, Map<String, Object> map) throws Exception; public int deleteData(String id, Map<String, Object> map) throws Exception; public int deleteData(String id, Object value) throws Exception; public int deleteAll(String id) throws Exception; public int getIntValue(String id, Map<String, Object> map) throws Exception; public int getIntValue(String id, Object value) throws Exception; public int getIntValue(String id) throws Exception; public <T> List<T> getListData(String id, Map<String, Object> map) throws Exception; public <T> List<T> getListData(String id, Object value) throws Exception; public <T> List<T> getListData(String id) throws Exception; public <T> T getReadData(String id) throws Exception; public <T> T getReadData(String id, Object value) throws Exception; public <T> T getReadData(String id, Map<String, Object> map) throws Exception; // INSERT, UPDATE, DELETE 프로시져(IN) public void callUpdateProcedure(String id, Object value) throws Exception; // SELECT(OUT) public <T> Map<String, T> callSelectOneProcedureMap(String id, Map<String, T> map) throws Exception; public <T> Map<String, T> callSelectListProcedureMap(String id, Map<String, T> map) throws Exception; } |
update delete 등 공용으로 자주 쓰이게 될 클래될 클래스
MybatisDaoImpl.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 | package com.sp.common.dao; import java.util.List; import java.util.Map; import org.apache.ibatis.session.SqlSession; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Repository; @Repository("dao") public class MyBatisDaoImpl implements CommonDAO { @Autowired private SqlSession sqlSession; /* public void setSqlSessionTemplate(SqlSession sqlSession) { this.sqlSession = sqlSession; } */ // ****************************************************************** // 데이터 추가 public int insertData(String id, Object value) throws Exception { int result = 0; try { result = sqlSession.insert(id, value); } catch (Exception e) { System.out.println(e.toString()); throw e; } finally { } return result; } // ****************************************************************** // 데이터 수정 public int updateData(String id, Object value) throws Exception { int result = 0; try { result = sqlSession.update(id, value); } catch (Exception e) { System.out.println(e.toString()); throw e; } return result; } public int updateData(String id, Map<String, Object> map) throws Exception { int result = 0; try { result = sqlSession.update(id, map); } catch (Exception e) { System.out.println(e.toString()); throw e; } return result; } // ****************************************************************** // 데이터 삭제 public int deleteData(String id, Map<String, Object> map) throws Exception { int result = 0; try { result = sqlSession.delete(id, map); } catch (Exception e) { System.out.println(e.toString()); throw e; } return result; } public int deleteData(String id, Object value) throws Exception { int result = 0; try { result = sqlSession.delete(id, value); } catch (Exception e) { System.out.println(e.toString()); throw e; } return result; } public int deleteAll(String id) throws Exception { int result = 0; try { result = sqlSession.delete(id); } catch (Exception e) { System.out.println(e.toString()); throw e; } return result; } // ****************************************************************** // 레 코드 수 / 최대 값 구하기 public int getIntValue(String id, Map<String, Object> map) throws Exception { int num = 0; try { num = ((Integer)sqlSession.selectOne(id, map)).intValue(); } catch (Exception e) { System.out.println(e.toString()); throw e; } return num; } public int getIntValue(String id, Object value) throws Exception { int num = 0; try { num = ((Integer)sqlSession.selectOne(id, value)).intValue(); } catch (Exception e) { System.out.println(e.toString()); throw e; } return num; } public int getIntValue(String id) throws Exception { int num = 0; try { num = ((Integer)sqlSession.selectOne(id)).intValue(); } catch (Exception e) { System.out.println(e.toString()); throw e; } return num; } // ****************************************************************** // 테이블의 하나 이상의 레코드를 SELECT public <T> List<T> getListData(String id, Map<String, Object> map) throws Exception { List<T> list = null; try { list = sqlSession.selectList(id, map); } catch (Exception e) { System.out.println(e.toString()); throw e; } return list; } public <T> List<T> getListData(String id, Object value) throws Exception { List<T> list = null; try { list = sqlSession.selectList(id, value); } catch (Exception e) { System.out.println(e.toString()); throw e; } return list; } public <T> List<T> getListData(String id) throws Exception { List<T> list = null; try { list = sqlSession.selectList(id); } catch (Exception e) { System.out.println(e.toString()); throw e; } return list; } // ****************************************************************** // 테이블의 하나의 레코드를 SELECT public <T> T getReadData(String id) throws Exception { try { return sqlSession.selectOne(id); } catch (Exception e) { System.out.println(e.toString()); throw e; } } public <T> T getReadData(String id, Object value) throws Exception { try { return sqlSession.selectOne(id, value); } catch (Exception e) { System.out.println(e.toString()); throw e; } } public <T> T getReadData(String id, Map<String, Object> map) throws Exception { try { return sqlSession.selectOne(id, map); } catch (Exception e) { System.out.println(e.toString()); throw e; } } // ****************************************************************** // 프로시져 // INSERT, UPDATE, DELETE @Override public void callUpdateProcedure(String id, Object value) throws Exception{ try { sqlSession.update(id, value); } catch (Exception e) { System.out.println(e.toString()); throw e; } } // SELECT : OUT 파라미터가 SYS_REFCURSOR 이외의 하나의 레코드(INTEGER 등) @Override public <T> Map<String, T> callSelectOneProcedureMap(String id, Map<String, T> map) throws Exception{ try { // select procedure 결과는 map로 리턴한다. sqlSession.selectOne(id, map); return map; } catch (Exception e) { System.out.println(e.toString()); } return map; } // SELECT : OUT 파라미터가 SYS_REFCURSOR(하나 또는 하나 이상의 레코드) public <T> Map<String, T> callSelectListProcedureMap(String id, Map<String, T> map) throws Exception{ try { // select procedure 결과는 map로 리턴한다. sqlSession.selectList(id, map); return map; } catch (Exception e) { System.out.println(e.toString()); } return map; } } |
'WEB > 게시판구현_springMvc2+mybatis' 카테고리의 다른 글
9. 사용자 생성 및 테이블 작성 (0) | 2017.04.12 |
---|---|
8. 공용 클래스 작성 Myutil.java (0) | 2017.04.12 |
6. 마이바티스 설정 mybatis-config, mybatis-context, mapper (0) | 2017.04.12 |
5. mvc-config.xml ,application-config 설정 (0) | 2017.04.12 |
4. web.xml 설정 (0) | 2017.04.12 |
mybatis-config.xml - mybatis환경설정 xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "HTTP://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<settings>
<setting name="cacheEnabled" value="false" />
<setting name="useGeneratedKeys" value="true" />
<setting name="defaultExecutorType" value="REUSE" />
</settings>
<!-- 별명 -->
<typeAliases>
<typeAlias alias="hashMap" type="java.util.HashMap" />
<typeAlias alias="map" type="java.util.Map" />
</typeAliases>
<!--
<mappers>
<mapper resource="mybatis/mapper/tempMapper.xml" />
</mappers>
-->
<mappers>
<mapper resource="mybatis/mapper/bbsMapper.xml" />
</mappers>
</configuration>
mybatis-context.xml - mybatis 객체 생성을 위한 xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:jdbc="http://www.springframework.org/schema/jdbc"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<value>/WEB-INF/mybatis/jdbc.properties</value>
</property>
</bean>
<!-- DBCP를 위한 DataSource 객체 -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="${jdbc.driverClass}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
<property name="maxActive" value="10" />
<property name="maxIdle" value="3" />
<property name="maxWait" value="10000" />
<property name="defaultAutoCommit" value="true" /> <!-- 기본:true -->
</bean>
<!-- SqlSessionFactoryBean : SqlSessionTemplate 객체를 얻는다. -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean" lazy-init="true">
<property name="dataSource" ref="dataSource" />
<property name="configLocation" value="/WEB-INF/mybatis/mybatis-config.xml"/>
<property name="mapperLocations" value="/WEB-INF/mybatis/mapper/*.xml" />
<!--
<property name="mapperLocations" value="classpath:com/think/mapper/**/*.xml" />
-->
<!--
<property name="transactionFactory">
<bean class="org.apache.ibatis.transaction.managed.ManagedTransactionFactory" />
</property>
-->
</bean>
<!-- SqlSessionTemplate : MyBatis SQL method 호출 및 관리, 예외처리 담당 -->
<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg index="0" ref="sqlSessionFactory" />
</bean>
<!-- 트랜잭션관리자. -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
<!-- 트랜잭션과 관련된 작업(트랜잭션시작, 커및, 롤백등) -->
<bean id="transactionTemplate" class="org.springframework.transaction.support.TransactionTemplate">
<property name="transactionManager" ref="transactionManager" />
</bean>
</beans>
bbsMapper.xml - 맵퍼
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="bbs">
</mapper>
'WEB > 게시판구현_springMvc2+mybatis' 카테고리의 다른 글
8. 공용 클래스 작성 Myutil.java (0) | 2017.04.12 |
---|---|
7. 공용 클래스 작성 - commonDAo (0) | 2017.04.12 |
5. mvc-config.xml ,application-config 설정 (0) | 2017.04.12 |
4. web.xml 설정 (0) | 2017.04.12 |
3. 메이븐, pom.xml 설정 (0) | 2017.04.12 |
5. mvc-config.xml ,application-config 설정
스프링 환경 설정파일
mvc-config.xml 설정
자세한설명은 추후.
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:util="http://www.springframework.org/schema/util"
xmlns:task="http://www.springframework.org/schema/task"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd
http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task.xsd">
<mvc:annotation-driven />
<!-- / 매핑에서 정적 리소스(html, css, js등)를 처리할수있도록 설정 -->
<mvc:default-servlet-handler/>
<context:component-scan base-package="com.sp" />
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="order" value="1" />
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />
<property name="prefix" value="/WEB-INF/view/" />
<property name="suffix" value=".jsp" />
</bean>
<!--
<mvc:view-resolvers>
<mvc:jsp prefix="/WEB-INF/view/" />
</mvc:view-resolvers>
-->
</beans>
application-config.xml
스프링에서 공통적으로 사용되는 객체를 생성하기 위한 xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
<!-- 마이바티스 설정 파일 import ★-->
<import resource="/../../mybatis/mybatis-context.xml"/>
</beans>
'WEB > 게시판구현_springMvc2+mybatis' 카테고리의 다른 글
7. 공용 클래스 작성 - commonDAo (0) | 2017.04.12 |
---|---|
6. 마이바티스 설정 mybatis-config, mybatis-context, mapper (0) | 2017.04.12 |
4. web.xml 설정 (0) | 2017.04.12 |
3. 메이븐, pom.xml 설정 (0) | 2017.04.12 |
2. URL, 파라미터 설정 (0) | 2017.04.12 |
4. web.xml 설정
web.xml
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
id="WebApp_ID" version="2.5">
<display-name>board1</display-name>
<!--
- Location of the XML file that defines the root application context.
- Applied by ContextLoaderListener.
-->
<!-- 공통으로 사용될 빈 환경설정 파일 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring/application-config.xml</param-value>
</context-param>
<!-- ContextLoaderListener : 서로다른 DispatcherServlet이 공통으로 사용될 빈 설정 -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!--
- Servlet that dispatches request to registered handlers (Controller implementations).
DispatcherSErvlet등록 및 스프링 컨트롤러의 환결설정 파일
-->
<servlet>
<servlet-name>dispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/mvc-config.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcherServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<!-- ★ 인코딩필터 -->
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
'WEB > 게시판구현_springMvc2+mybatis' 카테고리의 다른 글
6. 마이바티스 설정 mybatis-config, mybatis-context, mapper (0) | 2017.04.12 |
---|---|
5. mvc-config.xml ,application-config 설정 (0) | 2017.04.12 |
3. 메이븐, pom.xml 설정 (0) | 2017.04.12 |
2. URL, 파라미터 설정 (0) | 2017.04.12 |
1.STS - 스프링 mvc2 게시판 만들기 전체적인 개요 (0) | 2017.04.12 |
3. 메이븐, pom.xml 설정
pom.xml
pom.xml파일은 jstl, 스프링, 마이바티스, 오라클 등의 디펜던시를 설정한다.
대부분의 오픈 소스 라이브러리는 중앙 저장소에서 제공하지만 일부 라이브러리는 별도의 메이븐 원격 저장소를 통하여 제공한다. ( 오라클 등)
이처럼 중앙 저장소에서 제공하지 않는 라이브러리가 있으면 repository 엘리먼트에서 id, name, url값을 설정한다. id,name은임의의 값을 사용하며
url은 원격 저장소의 url을 설정한다.
http://mvnrepository.com
https://maven-repository.com
위 사이트에서 등록할 라이브러리를 입력 후 검색 해서 해당 라이브러리으 디펜던시를 pom.xml에 추가한다.
그렇게 작성된 pom.xml 이다 (2017.04.11)
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.springframework.samples</groupId>
<artifactId>sp</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<properties>
<!-- Generic properties -->
<java.version>1.8</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<!-- Web -->
<jsp.version>2.2</jsp.version>
<jstl.version>1.2</jstl.version>
<servlet.version>3.1.0</servlet.version>
<!-- Spring -->
<spring-framework.version>4.3.6.RELEASE</spring-framework.version>
<org.aspectj-version>1.6.10</org.aspectj-version>
<!-- Logging -->
<logback.version>1.0.13</logback.version>
<slf4j.version>1.7.23</slf4j.version>
<!-- Test -->
<junit.version>4.12</junit.version>
<!-- mybatis -->
<mybatis.version>3.4.2</mybatis.version>
<mybatis-spring.version>1.3.1</mybatis-spring.version>
<!-- commons -->
<commons-dbcp.version>1.4</commons-dbcp.version>
<commons-pool.version>1.6</commons-pool.version>
<commons-fileupload.version>1.3.1</commons-fileupload.version>
<commons-io.version>2.4</commons-io.version>
<!-- tiles -->
<tiles.version>3.0.7</tiles.version>
<!-- spring-security -->
<spring-security.version>4.2.1.RELEASE</spring-security.version>
</properties>
<repositories>
<!-- DBMS를 위한 레포지토리(ojdbc6.jar : 11g) -->
<repository>
<id>datanucleus.org</id>
<url>http://www.datanucleus.org/downloads/maven2/</url>
</repository>
<!-- jai_codec/jai_code 레포지토리 -->
<repository>
<id>geotools</id>
<url>http://download.osgeo.org/webdav/geotools/</url>
</repository>
</repositories>
<dependencies>
<!-- Spring MVC -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring-framework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring-framework.version}</version>
<exclusions>
<!-- Exclude Commons Logging in favor of SLF4j -->
<exclusion>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-websocket</artifactId>
<version>${spring-framework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-messaging</artifactId>
<version>${spring-framework.version}</version>
</dependency>
<!-- AspectJ -->
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>${org.aspectj-version}</version>
</dependency>
<!-- AspectJ Weaver -->
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.6.8</version>
</dependency>
<!-- @Inject -->
<dependency>
<groupId>javax.inject</groupId>
<artifactId>javax.inject</artifactId>
<version>1</version>
</dependency>
<!-- Other Web dependencies -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>${jstl.version}</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>${servlet.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>${jsp.version}</version>
<scope>provided</scope>
</dependency>
<!-- Spring and Transactions -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>${spring-framework.version}</version>
</dependency>
<!-- Logging with SLF4J & LogBack -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j.version}</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>${slf4j.version}</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>${slf4j.version}</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
<exclusions>
<exclusion>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
</exclusion>
<exclusion>
<groupId>javax.jms</groupId>
<artifactId>jms</artifactId>
</exclusion>
<exclusion>
<groupId>com.sun.jdmk</groupId>
<artifactId>jmxtools</artifactId>
</exclusion>
<exclusion>
<groupId>com.sun.jmx</groupId>
<artifactId>jmxri</artifactId>
</exclusion>
</exclusions>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>${logback.version}</version>
<scope>runtime</scope>
</dependency>
<!-- spring-jdbc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${spring-framework.version}</version>
</dependency>
<!-- spring-websocket -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-websocket</artifactId>
<version>${spring-framework.version}</version>
</dependency>
<!-- javax.websocket -->
<dependency>
<groupId>javax.websocket</groupId>
<artifactId>javax.websocket-api</artifactId>
<version>1.1</version>
</dependency>
<!-- oracle ojdbc6.jar -->
<dependency>
<groupId>oracle</groupId>
<artifactId>ojdbc6</artifactId>
<version>11.2.0.3</version>
</dependency>
<!-- DBCP/POLL -->
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>${commons-dbcp.version}</version>
</dependency>
<dependency>
<groupId>commons-pool</groupId>
<artifactId>commons-pool</artifactId>
<version>${commons-pool.version}</version>
</dependency>
<!-- Mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>${mybatis.version}</version>
</dependency>
<!-- MyBatis spring -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>${mybatis-spring.version}</version>
</dependency>
<!-- 마이바티스 쿼리 출력용 -->
<dependency>
<groupId>com.googlecode.log4jdbc</groupId>
<artifactId>log4jdbc</artifactId>
<version>1.2</version>
</dependency>
<!-- Tiles -->
<dependency>
<groupId>org.apache.tiles</groupId>
<artifactId>tiles-extras</artifactId>
<version>${tiles.version}</version>
</dependency>
<!-- 기타 commons -->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>${commons-fileupload.version}</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>${commons-io.version}</version>
</dependency>
<!-- spring security -->
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-core</artifactId>
<version>${spring-security.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-web</artifactId>
<version>${spring-security.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-config</artifactId>
<version>${spring-security.version}</version>
</dependency>
<!-- jackson -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.7.4</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.7.4</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.7.4</version>
</dependency>
<!-- JSON -->
<dependency>
<groupId>net.sf.json-lib</groupId>
<artifactId>json-lib</artifactId>
<version>2.4</version>
<classifier>jdk15</classifier>
</dependency>
<!-- JAI(Java Advanced Imaging) : 이미지편집기능 -->
<dependency>
<groupId>javax.media</groupId>
<artifactId>jai_codec</artifactId>
<version>1.1.3</version>
</dependency>
<dependency>
<groupId>javax.media</groupId>
<artifactId>jai_core</artifactId>
<version>1.1.3</version>
</dependency>
<!-- Test Artifacts -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${spring-framework.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
'WEB > 게시판구현_springMvc2+mybatis' 카테고리의 다른 글
6. 마이바티스 설정 mybatis-config, mybatis-context, mapper (0) | 2017.04.12 |
---|---|
5. mvc-config.xml ,application-config 설정 (0) | 2017.04.12 |
4. web.xml 설정 (0) | 2017.04.12 |
2. URL, 파라미터 설정 (0) | 2017.04.12 |
1.STS - 스프링 mvc2 게시판 만들기 전체적인 개요 (0) | 2017.04.12 |
2. URL, 파라미터 설정
미리 URL과 파라미터를 설정해 주자.
만들기 전 철저한 구성을 해두어야 차후 실수할 일이 적다.
게시글 리스트
URL : cp/bbs/list.do
JSP : [/WEB-INF/views]/bbs/list.jsp
글 쓰기 폼
URL : cp/bbs/created.do
JSP : [/WEB-INF/views]/bbs/created.jsp
글 저장 -> 게시글 리스트로 리다이렉트
URL : cp/bbs/created.do
글 보기
URL : cp/bbs/article.do
JSP : [/WEB-INF/views]/bbs/article.jsp
글 수정 폼
URL : cp/bbs/update.do
JSP : [/WEB-INF/views]/bbs/created.jsp
글 수정 완료 -> 게시글 리스트로 리다이렉트
URL : cp/bbs/update.do
글삭제 -> 게시글 리스트로 리다이렉트
URL : cp/bbs/delete.do
-------------------------------------
파라미터
1. 게시글리스트
페이징처리와 검색등등 복잡하다,, 리스트가 가장 까다로움.
게시물 리스트 -> 글쓰기버튼클릭 -> 글쓰기 폼
게시물 리스트 -> 글제목 클릭 글번호,페이지번호[,검색키,검색값] -> 글보기
게시물 리스트 -> 페이지번호 클릭 - 페이지번호[,검색키,검색값] -> 게시글리스트
게시물 리스트 -> 검색버튼 검색키,검색값 -> 게시글리스트
---------------------------------------
5. 글 수정 폼
글 수정 폼 -> 취소버튼 페이지번호 -> 게시글 리스트
-넘겨받은 파라미터
글번호, 페이지번호
-프로그램 작성
파라미터로 넘어온 글번호,페이지번호 넘겨받기
해당게시물을 테이블에서 가져온다
해당 게시물이 없으면 리스트로 리다이렉트 한다. [파라미터 : page ]
포워딩할 jsp로 넘길 값 설정 해당 게시물, 페이지번호, 작업구분 [mode : update]
글 수정 JSP로 포워딩
-----------------------------------------------
6. 글 수정 완료
- 넘겨 받은 파리미터
제목,이름,내용,패스워드,글번호,페이지번호
- 프로그램 작성
파라미터로 넘어온 제목, 이름, 내용,패스워드, 글번호, 페이지번호 넘겨 받기
테이블의 해당 게시물을 수정한다.
글 리스트로 리다이렉트 한다. [파라미터 : page]
----------------------------------------------------
7. 글 삭제
- 넘겨 받은 파라미터
글번호, 페이지번호
- 프로그램 작성
파라미터로 넘어온 글번호, 페이지번호 넘겨 받기
테이블의 해당 게시물을 삭제한다.
글 리스트로 리다이렉트 한다. [ 파라미터 : page]
'WEB > 게시판구현_springMvc2+mybatis' 카테고리의 다른 글
6. 마이바티스 설정 mybatis-config, mybatis-context, mapper (0) | 2017.04.12 |
---|---|
5. mvc-config.xml ,application-config 설정 (0) | 2017.04.12 |
4. web.xml 설정 (0) | 2017.04.12 |
3. 메이븐, pom.xml 설정 (0) | 2017.04.12 |
1.STS - 스프링 mvc2 게시판 만들기 전체적인 개요 (0) | 2017.04.12 |