Contents
1. 게시판 수정이번 포스팅은 Spring MVC를 사용하여 기본 게시판 CRUD 기능 중 "게시글 수정" 기능을 구현하는 과정입니다.
1. 게시판 수정
1.1 수정 화면으로 이동하기
게시글을 수정하기 위해서는 먼저 수정할 게시글의 내용을 화면에 표시해야 한다.
이를 위해
findById
메서드를 사용하여 특정 ID를 가진 게시글을 조회한 후, 그 결과를 뷰로 전달해야 된다.
@GetMapping("/board/{id}/update-form")
public String updateForm(@PathVariable("id") int id, HttpServletRequest request) {
Board board = boardRepository.findById(id);
request.setAttribute("model", board);
return "board/update-form";
}
1.2 수정화면 뷰 코드
{{>layout/header}}
<div class="container p-5">
<div class="card">
<div class="card-header"><b>글수정하기 화면입니다</b></div>
<div class="card-body">
<form action="/board/{{model.id}}/update" method="post">
<div class="mb-3">
<input type="text" class="form-control" placeholder="Enter title" name="title"
value="{{model.title}}">
</div>
<div class="mb-3">
<textarea class="form-control" rows="5" name="content">{{model.content}}</textarea>
</div>
<button class="btn btn-primary form-control">글수정하기완료</button>
</form>
</div>
</div>
</div>
{{>layout/footer}}

원래 주소 설계 규칙에는 주소에 동사 걸지않는다 method 가 put 이면 주소는
/board/{{model.id}}
가 될 것이다.1.3 Repository 업데이트 로직 / 테스트
@Transactional
public void updateById(String title, String content, int id) {
Query query = em.createNativeQuery("update board_tb set title =?, content =? where id =?");
query.setParameter(1, title);
query.setParameter(2, content);
query.setParameter(3, id);
query.executeUpdate();
}
import
org.assertj.core.api.Assertions;

findById
로 조회한 게시글 제목을 유추하여 성공적으로 변경 되었는지 테스트 가능함.1.4 게시글 수정 요청 처리
post 요청을 처리하는 컨트롤러 메서드 작성
@PostMapping("/board/{id}/update")
public String update(@PathVariable("id") int id, String title, String content) {
boardRepository.updateById(title, content, id);
return "redirect:/board/" + id;
}

에러가 발생할 수도 안할수도있다.
@PostMapping("/board/{id}/update")
public String update(@PathVariable("id") int id, @RequestParam("title") String title, @RequestParam("content") String content) {
boardRepository.updateById(title, content, id);
return "redirect:/board/" + id;
}
@RequestParam("title")
String title 에러가 발생한다면 추가 해 주어야함.1.5 최종 결과


이렇게 기본 게시판 CRUD 기능을 모두 구현했습니다.
각 메서드를 작성할 때마다 단위 테스트를 하여 잠재적으로 발생할 수 있는 에러를 조기에 발견하고, 그 원인을 쉽게 추적할 수 있습니다. 단위테스트를 통해 프론트엔드와 상관없이 백엔드 코드의 정확성을 빠르게 확인할 수 있습니다.
JavaScript를 사용하지 않고, Spring에 충실하기 위해 이번 프로젝트에서는
PUT
이나 DELETE
매핑을 사용하지 않았으나, 이번 프로젝트를 통해 Spring 의 작동 원리와 테스트 방법을 알아보는데 도움이 되셨길 바랍니다👍스프링부트 게시판 시리즈 v1 - 1. https://inblog.ai/hj/1-spring-게시판-무작정-따라하기-26526 - 2. https://inblog.ai/hj/2-spring-게시판-무작정-따라하기-26560 - 3. https://inblog.ai/hj/3-spring-게시판-무작정-따라하기-26757 - 4. https://inblog.ai/hj/4-spring-게시판-무작정-따라하기-26758 - 5. https://inblog.ai/hj/5-spring-게시판-무작정-따라하기-26934 - 6. https://inblog.ai/hj/6-spring-게시판-무작정-따라하기-26937 - 7. https://inblog.ai/hj/7-spring-게시판-무작정-따라하기-26940 - 8. https://inblog.ai/hj/8-spring-게시판-무작정-따라하기-27065 - 9. https://inblog.ai/hj/9-spring-게시판-무작정-따라하기끝-27066
Share article