본문 바로가기
Framework/Spring

[SPRING 시작-9]#게시판/ 게시물 쓰기 / Spring board insert example/ Mybatis insert

by 나비와꽃기린 2016. 10. 18.
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.


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을 활용한 파일첨부를 해보려면 여기를 참조하길 바란다

--> http://mkil.tistory.com/273