스프링 ch4-5, ch4-6 - 게시판 CRUD 기능 구현

서현우·2022년 7월 8일
0

스프링의정석

목록 보기
81/85

기능별 URI 정의

읽기 - '/board/read?bno=번호'
GET, 지정된 번호의 게시물을 보여준다.

삭제 - '/board/remove'
POST, 게시물을 삭제한다.

쓰기 - '/board/write'
GET, 게시물을 작성하기 위한 화면을 보여준다.

쓰기 - '/board/write'
POST, 작성한 게시물을 저장한다.

수정 - '/board/modify?bno=번호'
GET, 게시물을 수정하기 위해 읽어온다.

수정 - '/board/modify'
POST, 수정된 게시물을 저장한다.

URL, URI

URL - 전체 경로, URI - 일부 경로

1. read

boardList.jsp에서 title을 누르면 게시물 번호 bno를 BoardController로 보낸다. BoardController에 맵핑된 read메서드가 이 bno를 가지고 boardServce.read(bno)를 호출하면 DB에서 boardDto를 통해 값을 넘겨받는다.
이 boardDto를 view인 board.jsp로 넘겨주고, EL태그로 bno, title, content의 값을 받는다.

2. 목록

board.jsp의 목록버튼을 누르면 BoardController에 맵핑된 메서드인 list메서드가 page와 pageSize정보를 넘겨받고, offset과 pageSize를 가지고 DB로 boardService.getPage(map)을 호출한다. 이 값을 List로 받아서 page, pageSize, pageHandler와 같이 boardList.jsp로 전달한다.

3. 삭제

board.jsp에서 삭제버튼을 누르면 BoardController에 맵핑된 메서드인 remove에서 bno, page, pageSize값을 받고, HttpSession으로 writer를 확인 후 DB로 boardService.remove(bno, writer)를 호출한다. 그리고 page와 pageSize, 에러 또는 성공 메세지를 가지고, boardList.jsp로 리다이렉트한다. 이 때 삭제한 게시글이 있는 페이지로 이동하게 한다.

4. 쓰기

  1. boardList.jsp에서 글쓰기 버튼을 누르면 BoardController의 @GetMapping("/board/write")의 메서드 write를 호출하고, 모델에 "mode"="new"를 저장하고, board.jsp로 이동해서 넘겨준다. 이 때 board.jsp를 재활용해서, mode가 new면 게시글 읽기를 게시글 글쓰기로 변경하고, title과 content의 readonly를 제거해서 글을 쓸수 있게 한다.

  1. board.jsp에서 title과 content에 글을 쓰고 글쓰기 버튼을 누르면 @PostMapping("/board/write")의 메서드 write를 호출한다. write메서드는 매개변수로 title, content를 boardDto로 받고, HttpSession으로 id를 얻어서 writer에 setter로 저장한 뒤, boardService.write(boardDto)를 호출해서 DB로 보내서 저장한다. 성공하지 못하면 모델에 적은 내용과 에러메세지를 모델에 저장해서 다시 적은 내용을 board.jsp에 보여주고 에러메세지를 alert로 보여주고, 성공하면 성공메세지를 alert로 boardList.jsp에 보여준다. 이 때 1페이지로 가게 한다.

5. 수정

수정버튼은 누르면, 게시판 읽기는 게시판 수정으로 바뀌고, 수정버튼은 등록버튼으로 바뀐다. 그리고 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로 리다이렉트하고, 성공메세지를 보여준다. 이 때 페이지는 수정한 게시물이 있던 페이지로 돌아간다.

profile
안녕하세요!!

0개의 댓글