1. jquery lib 셋팅
<resources mapping="/resources/**" location="/resources/" /> 설정에 따라( servlet-context.xml에 셋팅 했었다)
resource 아래 lib 디렉토리 생성후, jquery*.js들을 넣어주었다.
2. common/head.jsp 생성
jqeury lib와 jstl 태그를 모든 jsp마다 참조시키기란 매우 비효율적이다. 따라서 공통파일을 생성한뒤 그 공통파일만 include 시킨다.
common 디렉토리 생성후 head.jsp 파일을 만들고
다음과 같이 taglib 및 위에서 셋팅해준 jqeury lib들을 참조시킨다.
<%@ taglib prefix="fmt" uri="http://java.sun.com/jstl/fmt" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<script type="text/javascript" src="./resources/lib/jquery-1.11.3.min.js"></script>
<script type="text/javascript" src="./resources/lib/jquery-ui.js"></script>
3. views/boardWrite.jsp 생성
views 디렉토리 아래에 boardWrite.jsp를 생성하고 다음과 같이 작성한다.
head.jsp를 include 시키며 form태그를 통해 action url인 /write로 data parameter를 보내 insert 시킬 예정이다.
<%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%>
<%@include file="common/head.jsp" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
</head>
<body>
<form name="frm_boardWrite" id="frm_boardWrite" method="post" action="/spring/write">
<table >
<colgroup>
<col width="15%">
<col width="*"/>
</colgroup>
<caption>게시글 작성</caption>
<tbody>
<tr>
<th scope="row">제목</th>
<td><input type="text" id="TITLE" name="TITLE" class="wdp_90" style="width:500px"></input></td>
</tr>
<tr>
<td colspan="2" class="view_text">
<textarea rows="20" cols="100" title="내용" id="CONTENTS" name="CONTENTS"></textarea>
</td>
</tr>
</tbody>
</table>
<input type="submit" name="업로드" value="작성하기" id="write">
<a href="/spring/boardMain" class="btn" id="list" >목록으로</a>
</form>
</body>
</html>
4. Controller 작성
/boardWrite는 작성하기 화면을 return해주는 메소드고
/write는 form 객체의 parameter를 받아 DB에 INSERT를 하러가는 메소드이다.
/**
* 게시물 작성하기 화면
*/
@RequestMapping(value = "/boardWrite")
public ModelAndView boardWrite(Map param) {
ModelMap model = new ModelMap();
return new ModelAndView("/views/boardWrite", model);
}
/**
* 게시물 INSERT
*/
@RequestMapping(value = "/write")
public ModelAndView write(HttpServletRequest req) {
Map param=new HashMap();
param.put("TITLE", req.getParameter("TITLE"));
param.put("CONTENTS", req.getParameter("CONTENTS"));
boardService.insertBoard(param);
ModelAndView mv = new ModelAndView("redirect:/boardMain");
return mv;
}
5. service, dao 작성
설명할게 딱히 없다. 넘어간다. 순서대로 service와 dao소스이다.
public void insertBoard(Map param) {
boardDao.insertBoard(param);
}
public void insertBoard(Map param) {
sqlsession.insert("boardSql.insertBoard",param);
}
6. xml 쿼리작성
paramterType을 Controller에서 map으로 받아왔기 때문에 다음과 같이 작성하였다. 파라미터 타입별로 적어줘야 error가 나지 않는다.
지금은 테스트예제고 화면에서 TITLE과 CONTENTS만 받아왔으므로 두개의 컬럼값만 변수로 지정해 INSERT해보자.
<insert id="boardSql.insertBoard" parameterType="java.util.HashMap" >
insert into BOARD_MAIN_TEST (BRD_TYPE,BRD_CD,DOCNUM,ADD_USR_NM,TITLE,CONTENTS,ATTACH,DEL_CONF,VIEWCOUNT)
values ('TEST','00000',SEQ_BOARD_MAIN_TEST_IDX.NEXTVAL,'Admin',#{TITLE},#{CONTENTS},'N','N',0)
</insert>
7. 테스트
/boardWrite을 호출하여 화면을 로드한 뒤, 원하는 값을 입력하고 작성하기 버튼을 누른다. 이런 form에서 보통 null 처리는 필수다. (지금은 안했지만)
그렇다면 다음과 같은 log와 함께 Data insert가 완료되었다.
db 확인. data가 잘 insert 되었다.
data insert시 주로 파일첨부를 가능하게 해주세요. 하는 요건을 늘 따라붙는다.
spring을 활용한 파일첨부를 해보려면 여기를 참조하길 바란다