4. Spring 게시판 무작정 따라하기

글쓰기 컨트롤러 생성 (PostMapping 활용)
HootJem's avatar
Aug 16, 2024
4. Spring 게시판 무작정 따라하기
 
https://inblog.ai/hj/1-spring-게시판-무작정-따라하기-26526 에서 컨트롤러의 @GetMapping을 사용하여 페이지 이동에 대해 알아보았다.
이번엔 글작성을 위해 @PostMapping 을 사용할 것이다.
 

1. 글쓰기 컨트롤러 코드 작성

@PostMapping("/board/save") // 사용자가 요청할 URL public String save(String title, String content) { // 사용자가 보낸 제목과 내용을 매개변수로 받습니다. boardRepository.save(title, content); // 레포지토리의 save 메서드를 호출해 DB에 저장 return "redirect:/board"; // 저장이 완료되면 게시판 페이지로 리다이렉트합니다. }
  • @PostMapping: 이 애노테이션은 HTTP POST 요청을 처리하는 데 사용된다. 여기서는 /board/save로 들어오는 POST 요청을 처리하게 된다.
  • 리포지토리 호출: 글 제목과 내용을 받아서, boardRepository.save() 메서드를 통해 데이터베이스에 저장한다.
  • 리다이렉트: 글이 성공적으로 저장된 후, /board 페이지로 사용자를 리다이렉트한다.
notion image
리포지토리 주입: @Autowired 어노테이션을 통해 BoardRepository를 주입받는다. 이 리포지토리는 데이터베이스와의 상호작용을 담당한다.

2. 글쓰기 페이지 작성 (Mustache 템플릿 수정)

글을 작성할 수 있는 페이지를 만들어야겠죠? 아래와 같이 Mustache 템플릿을 수정해봅시다.
{{>layout/header}} <div class="container p-5"> <div class="card"> <div class="card-header"><b>글쓰기 화면입니다</b></div> <div class="card-body"> <form> <div class="mb-3"> <input type="text" class="form-control" placeholder="Enter title" name="subtitle"> </div> <div class="mb-3"> <textarea class="form-control" rows="5" name="postContent"></textarea> </div> <button class="btn btn-primary form-control">글쓰기완료</button> </form> </div> </div> </div> {{>layout/footer}}
기존 코드이다. 글을 작성하는 페이지이지만 controller 와 연결은 되어있지 않다.
 
notion image
  • action="/board/save": 사용자가 작성한 글은 /board/save로 POST 요청된다.
  • method="post": 폼 데이터를 POST 방식으로 서버에 전송한다.
  • enctype="application/x-www-form-urlencoded": 데이터를 key=value 형식으로 서버에 전송한다.
  • name="title"name="content": 컨트롤러에서 사용하는 변수명과 동일하게 설정해줘야 데이터가 제대로 매핑된다.
 

3. 글쓰기 기능 테스트

이제 페이지에서 글을 작성하고 "글쓰기 완료" 버튼을 클릭하면, 데이터가 DB에 저장되고 게시판 페이지로 리다이렉트될 것이다.
아래는 실제로 글을 작성한 화면이다.
글 작성 화면
글 작성 화면
 
db insert 확인
db insert 확인
Hibernate가 실행한 쿼리 로그: insert into board_tb (title, content, created_at) values (?, ?, now())
 
📌만약 에러가 발생한다면, 컨트롤러의 매개변수 이름과 폼에서 보내는 데이터의 name 속성이 일치하는지, 그리고 데이터가 제대로 전달되는지 확인해야 한다.
 

이렇게 해서 간단히 Spring을 이용한 게시판 글쓰기 기능을 구현해봤습니다. 다음에는 게시된 글을 조회하는 방법에 대해 다뤄볼게요!
 
Share article

[HootJem] 개발 기록 블로그