읽기 - '/board/read?bno=번호'
GET, 지정된 번호의 게시물을 보여준다.
삭제 - '/board/remove'
POST, 게시물을 삭제한다.
쓰기 - '/board/write'
GET, 게시물을 작성하기 위한 화면을 보여준다.
쓰기 - '/board/write'
POST, 작성한 게시물을 저장한다.
수정 - '/board/modify?bno=번호'
GET, 게시물을 수정하기 위해 읽어온다.
수정 - '/board/modify'
POST, 수정된 게시물을 저장한다.
URL - 전체 경로, URI - 일부 경로
boardList.jsp에서 title을 누르면 게시물 번호 bno를 BoardController로 보낸다. BoardController에 맵핑된 read메서드가 이 bno를 가지고 boardServce.read(bno)를 호출하면 DB에서 boardDto를 통해 값을 넘겨받는다.
이 boardDto를 view인 board.jsp로 넘겨주고, EL태그로 bno, title, content의 값을 받는다.
board.jsp의 목록버튼을 누르면 BoardController에 맵핑된 메서드인 list메서드가 page와 pageSize정보를 넘겨받고, offset과 pageSize를 가지고 DB로 boardService.getPage(map)을 호출한다. 이 값을 List로 받아서 page, pageSize, pageHandler와 같이 boardList.jsp로 전달한다.
board.jsp에서 삭제버튼을 누르면 BoardController에 맵핑된 메서드인 remove에서 bno, page, pageSize값을 받고, HttpSession으로 writer를 확인 후 DB로 boardService.remove(bno, writer)를 호출한다. 그리고 page와 pageSize, 에러 또는 성공 메세지를 가지고, boardList.jsp로 리다이렉트한다. 이 때 삭제한 게시글이 있는 페이지로 이동하게 한다.
수정버튼은 누르면, 게시판 읽기는 게시판 수정으로 바뀌고, 수정버튼은 등록버튼으로 바뀐다. 그리고 jQuery 코드로 title과 content의 readonly를 false로 바꿔서 수정 가능하게 만들고 board.jsp로 리턴한다. 이제 내용 수정 후 등록 버튼을 누르면 PostMapping("/board/write")에 맵핑된 modify메서드를 호출하고, 세션으로 id를 얻어서 setter로 boardDto에 저장한다. 그리고 boardService.modify(boardDto)를 호출하고, DB에 boardDto의 bno, title, content, writer를 저장한다. 그다음 저장이 실패하면 board.jsp에서 에레메세지와 수정한 내용을 다시 보여주고, 성공하면 boardList.jsp로 리다이렉트하고, 성공메세지를 보여준다. 이 때 페이지는 수정한 게시물이 있던 페이지로 돌아간다.