게시판 만들기(스프링 부트3, 나도코딩 스터디)/8장. 게시글 삭제하기 : Delete
8.1~8.2 데이터 삭제하기(게시판 만들기 / 길벗 코딩 자율학습단)
coding232624
2023. 11. 28. 12:24
데이터 삭제 과정
- 클라이언트가 HTTP 메서드로 특정 게시글의 삭제를 요청
- 삭제 요청을 받은 커트롤러는 리파지터리를 통해 DB에 저장된 데이터를 찾아 삭제(기존의 데이터가 있을 경우 실행)
- 삭제가 완료되면 클라이언트를 결과페이지로 리다이렉트
프로그램 작성 순서(데이터 삭제하기)
1. 상세페이지(show.mustache)로 가서 삭제버튼 및 연결 URL설정
<a href="/articles/{{article.id}}/delete" class="btn btn-danger">Delete</a>
2. 컨트롤러로 가서 해당 URL(삭제 링크) @GetMapping 어노테이션으로 받기
3. 리파지터리로 링크의 id값을 통해 데이터를 받아와 엔티티에 저장
4. 엔티티 값이 null이 아닐 경우 리파지터리의 .delete()메서드를 통해 엔티티값 삭제
5. 리다이렉트의 휘발성 변수를 사용하기 위해 RedirectAttributes 객체 생성
6. 생성한 객체를 통해 .addFlashAttribute(넘기려는 키의 문자열, 넘겨주려는 값_객체)를 통해 휘발성 값 생성
7. 리다이렉트를 통해 결과 페이지 반환
@GetMapping("/articles/{id}/delete")
public String delete(@PathVariable Long id, RedirectAttributes rttr){
log.info("삭제 요청이 들어왔습니다!!");
Article target = articleRepository.findById(id).orElse(null);
if (target != null){
articleRepository.delete(target);
rttr.addFlashAttribute("msg","삭제됐습니다!");
}
return "redirect:/articles";
}
8. 해당 뷰페이지의 원하는 곳(헤더가장 아래쪽)(다른곳도 가능)에 휘발성 값 사용
</nav>
{{#msg}}
<div class="alert alert-warning alert-dismissible fade show" role="alert">
<strong>{{msg}}</strong>
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
</div>
{{/msg}}