궁금한 것에 대한 것은 모르는 것이 많겠지만 함께 알아보도록 노력하겠습니다.
참조 게시 포스트 : http://addio3305.tistory.com/
-------------------------------------------------------------------------------------------------------------------------------------------
1. 게시글 수정하기
1.1 Controller 에 추가하기
SampleController.java 에 추가하기
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | @RequestMapping (value= "/sample/openBoardModify.do" ) public ModelAndView openBoardModify(CommandMap commandMap) throws Exception{ ModelAndView mv = new ModelAndView( "/sample/boardModify" ); Map<String,Object> map = sampleService.selectBoard(commandMap.getMap()); mv.addObject( "map" ,map); return mv; } @RequestMapping (value= "/sample/modifyBoard.do" ) public ModelAndView modifyBoard(CommandMap commandMap) throws Exception{ ModelAndView mv = new ModelAndView( "redirect:/sample/openBoardDetail.do" ); sampleService.modifyBoard(commandMap.getMap()); mv.addObject( "IDX" , commandMap.get( "IDX" )); return mv; } |
- 위 메서드는 수정하기 페이지로 가는 메서드로 게시판에 대한 정보는 아까 생성했던 selectBoard를 통해서 가져오기 때문에 Service 단 이후로 만들 필요는 없다. 마찬가지로 map을 파라미터로 가져간다.
- 다음 메서드는 수정하기에 대한 처리의 매핑 메서드로 리다이렉트로 게시글 상세보기로 돌아가며 돌아갈 때 필요한 IDX를 파라미터로 넘겨준다. 그리고 modifyBoard를 이용하여 서비스단 처리를 호출한다.
1.2 Service. ServiceImpl
SampleService.java 에 추가
1 | void modifyBoard(Map<String,Object> map) throws Exception; |
SampleServiceImpl.java 에 추가
1 2 3 4 | @Override public void modifyBoard(Map<String, Object> map) throws Exception { sampleDAO.modifyBoard(map); } |
- 수정하기에 대한 처리를 위한 부분만 만들어주면 된다. 특별한 것은 없다.
1.3 DAO
SampleDAO.java 에 추가
1 2 3 | public void modifyBoard(Map<String,Object> map) { update( "sample.modifyBoard" ,map); } |
- DAO에서도 특별한 점은 없다.
1.4 SQL
sample_SQL.xml 에 추가
1 2 3 4 5 6 7 8 9 10 | < update id = "sample.modifyBoard" parameterType = "hashmap" > <![CDATA[ UPDATE TB_BOARD1 SET TITLE=#{TITLE}, CONTENTS=#{CONTENTS} WHERE IDX=#{IDX} ]]> </ update > |
- 앞으로 살펴볼 jsp 파일에서 폼에 대한 정보를 가져오면서 TITLE, CONTENTS, IDX의 값을 사용할 수 있었다. 다음 JSP파일에서 살펴보자.
1.5 JSP
boardModify.jsp
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 | <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> < html > < head > < title >글 수정하기</ title > <%@ include file="/WEB-INF/include/include-header.jspf" %> </ head > < body > < form id = "frm" > < table class = "board_view" > < caption >글 수정하기</ caption > < colgroup > < col width = "15%" > < col width = "*" > </ colgroup > < tbody > < tr > < th scope = "row" >글 번호</ th > < td >${map.IDX }</ td > < th scope = "row" >조회수</ th > < td >${map.HIT_CNT }</ td > </ tr > < tr > < th scope = "row" >작성자</ th > < td >${map.CREA_ID }</ td > < th scope = "row" >작성시간</ th > < td >${map.CREA_DTM }</ td > </ tr > < tr > < th scope = "row" >제목</ th > < td colspan = "3" > < input type = "text" id = "TITLE" name = "TITLE" class = "wdp_90" value = "${map.TITLE }" /> </ td > </ tr > < tr > < th scope = "row" >내용</ th > < td colspan = "3" class = "view_text" > < textarea rows = "20" cols = "100" title = "내용" id = "CONTENTS" name = "CONTENTS" >${map.CONTENTS }</ textarea > </ td > </ tr > </ tbody > </ table > </ form > < a href = "#this" id = "list" class = "btn" >목록으로</ a > < a href = "#this" id = "modify" class = "btn" >수정하기</ a > < a href = "#this" id = "delete" class = "btn" >삭제하기</ a > <%@ include file="/WEB-INF/include/include-body.jspf" %> < script type = "text/javascript" > $(document).ready(function(){ $("#modify").on("click",function(e){ e.preventDefault(); fn_modifyBoard(); }) $("#list").on("click",function(e){ e.preventDefault(); fn_openBoardList(); }) $("#delete").on("click",function(e){ e.preventDefault(); fn_deleteBoard(); }) }) function fn_modifyBoard(){ var comSubmit = new ComSubmit("frm"); comSubmit.setUrl("< c:url value = '/sample/modifyBoard.do' />"); comSubmit.submit(); } function fn_openBoardList(){ var comSubmit = new ComSubmit(); comSubmit.setUrl("< c:url value = '/sample/openBoardList.do' />"); comSubmit.submit(); } function fn_deleteBoard(){ var comSubmit = new ComSubmit("frm"); comSubmit.setUrl("< c:url value = '/sample/deleteBoard.do' />"); comSubmit.submit(); } </ script > </ body > </ html > |
- 거의 형식은 상세보기와 비슷하다. 그러므로 밑의 jQuery 부분만 살펴보자면 수정하기 부분에서 form을 할당하여 게시글의 정보를 넘겨주는 것을 볼 수 있다. 삭제하기 부분도 마찬가지이다. "frm"을 넘겨줌으로써 새로운 request에게 어떤 게시글의 IDX인지와 TITLE, CONTENTS 값을 넘겨준다. 삭제하기도 마찬가지로 IDX값을 넘겨줘야 하므로 "frm"을 할당하여 주는 것을 볼 수 있다.
2. 게시글 삭제하기
- 게시글 삭제하기에는 따로 페이지는 없고 수정하기 페이지에서 삭제하기에 대한 기능만 처리해주면 된다. 따라서 jsp파일은 따로 만들 필요가 없고 Controller, Service, DAO, SQL만 작성하면 된다.
2.1 Controller
SampleController.java 에 추가
1 2 3 4 5 6 7 | @RequestMapping (value= "/sample/deleteBoard.do" ) public ModelAndView deleteBoard(CommandMap commandMap) throws Exception{ ModelAndView mv = new ModelAndView( "redirect:/sample/openBoardList.do" ); sampleService.deleteBoard(commandMap.getMap()); return mv; } |
- 일반적인 기능에 대한 매핑 메서드이다.
2.2 Service, ServiceImpl
SampleService.java 에 추가
1 | void deleteBoard(Map<String,Object> map) throws Exception; |
1 2 3 4 | @Override public void deleteBoard(Map<String, Object> map) throws Exception { sampleDAO.deleteBoard(map); } |
- 서비스 부분도 여태까지 살펴온 것과 동일하다.
2.3 DAO
SampleDAO.java 에 추가
1 2 3 | public void deleteBoard(Map<String, Object> map) { update( "sample.deleteBoard" ,map); } |
- DAO 부분도 동일하다.
2.4 SQL
sample_SQL.xml 에 추가
1 2 3 4 5 6 7 8 9 | < update id = "sample.deleteBoard" parameterType = "hashmap" > <![CDATA[ UPDATE TB_BOARD1 SET DEL_GB='Y' WHERE IDX=#{IDX} ]]> </ update > |
- 게시물 삭제라고 삭제하지 않고 DEL_GB 속성을 Y로 하여 삭제한 것처럼 보이지 않게 하였다. 만약에 복구가 필요한 상황에 대비하기 위하여 이런 식으로 만들었다.
3. 수정하기, 삭제하기 테스트
- 수정하기 페이지이다. 수정할 내용을 입력하고 수정하기를 누른다.
- 완료가 되는 모습을 볼 수 있다. 여기까지 왔다면 수정하기가 잘 작성된 것이다.
- 수정하기 페이지에 대한 로그창이다.
- 수정하기 처리에 대한 로그창이다.
- 삭제하기가 완료된 화면이다.
- 삭제하기 처리에 대한 로그이다.
이렇게 뜬다면 여기까지 잘 따라온 것이다.
여기까지 따라하면서 배운 지식을 바탕으로 삭제된 게시글 리스트를 만들어보고 복구하는 처리에 대해서 각자 만들어보자.
'코딩 > Spring' 카테고리의 다른 글
Spring 개발 - 게시판 만들기(14) - 파일 다운로드 (0) | 2018.01.01 |
---|---|
Spring 개발 - 게시판 만들기(13) - 파일 업로드 (1) | 2017.12.30 |
Spring 개발 - 게시판 만들기(11) - 게시글 상세보기 (0) | 2017.12.26 |
Spring 개발 - 게시판 만들기(10) - 게시글 쓰기 (0) | 2017.12.25 |
Spring 개발 - 게시판 만들기(9) - HandlerMethodArgumentResolver 적용 (0) | 2017.12.25 |