게시글을 삭제하는 과정은 아래 순서와 같다.
1. 클라이언트가 HTTP 메서드로 특정 게시글의 삭제를 요청
2. 삭제 요청을 받은 컨트롤러는 리파지터리를 통해 DB에 저장된 데이터를 찾아 삭제. (기존 데이터가 있는 경우만 수행!)
3. 삭제가 완료됐다면, 클라이언트를 결과 페이지로 리다이렉트.
RedirectAttibutes 클래스 : 결과 페이지로 리다이렉트할 때, 클라이언트에 삭제 완료 메시지도 같이 띄워주는,
리다이렉트된 페이지에서 사용할 일회성 데이터를 등록할 수 있게 해주는 addFlashAttribute()
show.mustache에 edit 옆에 a 태그에 버튼 css로 버튼으로 적용해 추가하기
delete 메서드가 잘 작동하는지 확인도 되었다.
CRUD에서 데이터의 생성, 수정, 삭제...는 모두 리파지터리가 한다는 것을 기억하고 id와 일치하는 Article 객체를 target 변수에 저장하고, target이 null이 아닐 때, articleRepository.delete(target)을 할 수 있게 코드를 작성했다.
그리고 실제로, id가 1인 게시글이 DB에서 삭제가 되었음을 확인했다.
이번에는 3번을 삭제해볼것이다.
Delete 버튼을 누르니, 리다이렉트로 설정된 /articles로 이동한 것을 확인할 수 있었고, 3번이 없어진 것을 확인할 수 있다.
실제 DB에서도 삭제됨을 확인했다.
지금까지의 삭제 코드이다.
삭제 완료 메시지 남기기
처음에 RedirectAttribites라는 클래스의 addFlashAttribute()를 사용하면 리다이렉트 시점에 한번만 사용할 데이터를 등록할 수 있다. 즉, 휘발성 데이터를 등록할 수 있다.
RedirectAttributes.addFlashAttribute("attributeName", "attributeValue");
삭제됐습니다! 라는 데이터를 msg가 가지고 있다. 이것을 리다이렉트 되어 /articles에서 메시지를 출력을 해야하므로, index.mustache로 이동한다.
코드를 보니, header.mustach를 수정하는 것이 더 옳다고 해서 header에서 아래와 같이 코드를 추가해준다. (</nav>아래)
그러면 X 버튼을 누르면 삭제됐다는 메시지창이 없어진다.
id가 3인것까지 삭제를 했고, 이제 남은 하나를 DB에서 SQL문으로 삭제를 해보고자 한다.
그러면 DB에서 삭제되고, 없어짐을 확인할 수 있다.
DELETE [FROM] 테이블명 WHERE 조건; -- [] : 생략가능, FROM은 생략가능
코딩 자율학습 스프링 부트 3 자바 백엔드 개발 입문
만들면서 배우는 친절한 백엔드 개발 자습서
www.gilbut.co.kr
'Backend > Spring' 카테고리의 다른 글
[Spring] REST API와 JSON (실습 내용 추가 필요) (0) | 2023.08.27 |
---|---|
[Spring] CRUD와 SQL 쿼리 종합 (3) | 2023.08.27 |
[Spring] 게시글 수정하기 : Update (0) | 2023.08.22 |
[Spring] 게시판 내 페이지 이동하기 (링크와 리다이렉트) (1) | 2023.08.21 |
[Spring] 게시물 읽기 (Read)* (1) | 2023.08.21 |