[Spring] 방명록의 수정과 삭제 처리

[Spring] 방명록의 수정과 삭제 처리

방명록의 수정과 삭제 처리를 해봅시다.


방명록의 수정은 POST 방식으로 처리하고 수정 완료시 결과를 확인할 수 있는 조회 페이지로 넘어갑니다.
삭제 또한 POST 방식으로 처리하고 삭제 완료시 결과를 확인할 수 있는 목록 페이지로 넘어갑니다.
목록으로 이동할 때 GET 방식으로 처리하고 기존에 사용하던 페이지의 번호를 유지합니다.



1. GuestbookController 수정



1

우선 수정과 삭제 기능 모두 게시글을 조회를 통해 진입합니다. 이를 위해 GuestbookController에서 read()에 어노테이션 값을 변경해 ‘/guestbook/modify’를 처리합니다.

2. modify.html 작성



2

수정 화면으로 사용할 modify.html을 작성합니다.
modify.html을 read.html을 복사해서 추가한 뒤 수정합니다.
먼저 제목을 수정한 뒤 form 태그로 본문의 내용을 감싼 뒤 post로 처리하도록 합니다. 읽기 전용이였던 항목 중 수정할 항목의 읽기전용을 지웁니다. 다음으로 날짜 관련 부분은 자동으로 처리되기 때문에 name의 속성을 적지 않은 채로 작성합니다.
마지막으로 Modify, toList, Remove 버튼을 추가합니다.

3. modify.html 결과



3

브라우저를 통해 확인한 결과 제목과 내용을 수정할 수 있도록 되어있는 것을 확인할 수 있습니다.

4. GuestbookService 인터페이스 수정



4

방명록의 수정과 삭제는 현재 서비스 계층에 구현된 기능이 없기 때문에 GuestbookService 인터페이스에 remove()와 modify() 메소드를 작성합니다.

5. GuestbookServiceImpl 클래스 수정



5

인터페이스에 추가한 메소드를 구현합니다.
modify()의 경우 GuestbookDTO를 매개변수로 받아 해당 dto의 gno를 통해 entity를 찾은 뒤 entity의 제목과 본문을 매개변수로 받은 dto의 제목과 본문으로 바꿔준 다음 저장합니다.
remove()의 경우 매개변수로 받은 gno값을 repository의 deleteById()를 통해 엔티티를 제거합니다.

6. GuestbookController 클래스 수정(remove)



6

삭제 작업을 마친 뒤 목록 페이지로 돌아가도록 GuestbookController를 수정합니다.
@PostMapping을 사용해 ‘/guestbook/list’로 redirect 되도록 위의 그림과 같이 코드를 작성합니다.

7. modify.html 수정(remove)



7

삭제 버튼 기능을 작성하겠습니다.
삭제 작업은 GET 방식으로 수정 페이지에서 삭제 버튼을 눌러 처리합니다. 버튼간 구별을 위해 클래스 속성을 추가합니다.
하단에 자바 스크립트를 통해 Remove 버튼을 클릭할 경우 ‘/guestbook/remove’로 post 방식을 통해 이동하도록 작성합니다.

8. modify?gno=311&page=1



8

위의 그림에 작성된 311번 방명록을 삭제해보겠습니다.

9. remove 결과



9

Remove가 정상적으로 처리되어 311번 방명록이 삭제되었고 목록 1페이지로 이동한 것을 확인할 수 있습니다.

10. modify.html 수정(modify)



10

수정 처리 또한 POST 방식으로 수행됩니다.
수정 시 ‘글번호’, ‘제목’, ‘내용’이 전달되고 수정 후 목록 페이지 또는 조회 페이지로 이동합니다.
수정이 완료된 후 동일한 정보를 유지할 수 있게 form 태그에 page값을 추가해 전달하도록 합니다.

11. GuestbookController 클래스 수정(modify)



11

GuestbookController에서 세 가지의 파라미터를 사용해 modify()를 작성합니다. 각각의 매개변수는 글의 정보를 가진 GuestbookDTO와 기존 페이지의 정보를 가진 PageRequestDTO, 리다이렉트 페이지로 이동하는 RedirectAttributes입니다.

12. modify.html 수정(modify 이벤트 처리)



12

modify 버튼을 누를 때 수정하시겠습니까? 라는 메세지를 통해 수정 여부를 확인하고 POST 방식으로 서버에 요청하도록 modify.html에 코드를 추가합니다.

13. modify 이벤트 처리 결과



13

modify 페이지에서 modify 버튼을 누를 때 이벤트 메시지가 나오는 것을 확인할 수 있습니다.

14. modify.html 수정(ToList)



14

마지막으로 목록으로 돌아갈 ToList 버튼의 기능을 구현하겠습니다.
form 태그의 모든 내용을 지운 뒤 목록 페이지로 이동할 내용을 다시 추가하는 방식으로 작동합니다.

15. modify?gno=256&page=6



15

ToList의 기능을 확인하기 위해 6페이지의 256번 방명록의 수정창으로 들어간 뒤 ToList 버튼을 클릭합니다.

16. ToList 실행 결과



16

실행 결과 정상적으로 원래 있던 페이지로 넘어가는 것을 확인할 수 있습니다.


© 2022. All rights reserved.