[Spring] 방명록의 수정과 삭제 처리
![[Spring] 방명록의 수정과 삭제 처리](/assets/img/web/spring/logo.png)
방명록의 수정과 삭제 처리를 해봅시다.
- 1. GuestbookController 수정
- 2. modify.html 작성
- 3. modify.html 결과
- 4. GuestbookService 인터페이스 수정
- 5. GuestbookServiceImpl 클래스 수정
- 6. GuestbookController 클래스 수정(remove)
- 7. modify.html 수정(remove)
- 8. modify?gno=311&page=1
- 9. remove 결과
- 10. modify.html 수정(modify)
- 11. GuestbookController 클래스 수정(modify)
- 12. modify.html 수정(modify 이벤트 처리)
- 13. modify 이벤트 처리 결과
- 14. modify.html 수정(ToList)
- 15. modify?gno=256&page=6
- 16. ToList 실행 결과
방명록의 수정은 POST 방식으로 처리하고 수정 완료시 결과를 확인할 수 있는 조회 페이지로 넘어갑니다.
삭제 또한 POST 방식으로 처리하고 삭제 완료시 결과를 확인할 수 있는 목록 페이지로 넘어갑니다.
목록으로 이동할 때 GET 방식으로 처리하고 기존에 사용하던 페이지의 번호를 유지합니다.
1. GuestbookController 수정
우선 수정과 삭제 기능 모두 게시글을 조회를 통해 진입합니다. 이를 위해 GuestbookController에서 read()에 어노테이션 값을 변경해 ‘/guestbook/modify’를 처리합니다.
2. modify.html 작성
수정 화면으로 사용할 modify.html을 작성합니다.
modify.html을 read.html을 복사해서 추가한 뒤 수정합니다.
먼저 제목을 수정한 뒤 form 태그로 본문의 내용을 감싼 뒤 post로 처리하도록 합니다. 읽기 전용이였던 항목 중 수정할 항목의 읽기전용을 지웁니다. 다음으로 날짜 관련 부분은 자동으로 처리되기 때문에 name의 속성을 적지 않은 채로 작성합니다.
마지막으로 Modify, toList, Remove 버튼을 추가합니다.
3. modify.html 결과
브라우저를 통해 확인한 결과 제목과 내용을 수정할 수 있도록 되어있는 것을 확인할 수 있습니다.
4. GuestbookService 인터페이스 수정
방명록의 수정과 삭제는 현재 서비스 계층에 구현된 기능이 없기 때문에 GuestbookService 인터페이스에 remove()와 modify() 메소드를 작성합니다.
5. GuestbookServiceImpl 클래스 수정
인터페이스에 추가한 메소드를 구현합니다.
modify()의 경우 GuestbookDTO를 매개변수로 받아 해당 dto의 gno를 통해 entity를 찾은 뒤 entity의 제목과 본문을 매개변수로 받은 dto의 제목과 본문으로 바꿔준 다음 저장합니다.
remove()의 경우 매개변수로 받은 gno값을 repository의 deleteById()를 통해 엔티티를 제거합니다.
6. GuestbookController 클래스 수정(remove)
삭제 작업을 마친 뒤 목록 페이지로 돌아가도록 GuestbookController를 수정합니다.
@PostMapping
을 사용해 ‘/guestbook/list’로 redirect 되도록 위의 그림과 같이 코드를 작성합니다.
7. modify.html 수정(remove)
삭제 버튼 기능을 작성하겠습니다.
삭제 작업은 GET 방식으로 수정 페이지에서 삭제 버튼을 눌러 처리합니다. 버튼간 구별을 위해 클래스 속성을 추가합니다.
하단에 자바 스크립트를 통해 Remove 버튼을 클릭할 경우 ‘/guestbook/remove’로 post 방식을 통해 이동하도록 작성합니다.
8. modify?gno=311&page=1
위의 그림에 작성된 311번 방명록을 삭제해보겠습니다.
9. remove 결과
Remove가 정상적으로 처리되어 311번 방명록이 삭제되었고 목록 1페이지로 이동한 것을 확인할 수 있습니다.
10. modify.html 수정(modify)
수정 처리 또한 POST 방식으로 수행됩니다.
수정 시 ‘글번호’, ‘제목’, ‘내용’이 전달되고 수정 후 목록 페이지 또는 조회 페이지로 이동합니다.
수정이 완료된 후 동일한 정보를 유지할 수 있게 form 태그에 page값을 추가해 전달하도록 합니다.
11. GuestbookController 클래스 수정(modify)
GuestbookController에서 세 가지의 파라미터를 사용해 modify()를 작성합니다. 각각의 매개변수는 글의 정보를 가진 GuestbookDTO와 기존 페이지의 정보를 가진 PageRequestDTO, 리다이렉트 페이지로 이동하는 RedirectAttributes입니다.
12. modify.html 수정(modify 이벤트 처리)
modify 버튼을 누를 때 수정하시겠습니까? 라는 메세지를 통해 수정 여부를 확인하고 POST 방식으로 서버에 요청하도록 modify.html에 코드를 추가합니다.
13. modify 이벤트 처리 결과
modify 페이지에서 modify 버튼을 누를 때 이벤트 메시지가 나오는 것을 확인할 수 있습니다.
14. modify.html 수정(ToList)
마지막으로 목록으로 돌아갈 ToList 버튼의 기능을 구현하겠습니다.
form 태그의 모든 내용을 지운 뒤 목록 페이지로 이동할 내용을 다시 추가하는 방식으로 작동합니다.
15. modify?gno=256&page=6
ToList의 기능을 확인하기 위해 6페이지의 256번 방명록의 수정창으로 들어간 뒤 ToList 버튼을 클릭합니다.
16. ToList 실행 결과
실행 결과 정상적으로 원래 있던 페이지로 넘어가는 것을 확인할 수 있습니다.