서비스 구현 (게시글작성)

화낼거양's avatar
Nov 18, 2024
서비스 구현 (게시글작성)
 
 

페이지 구성 :

 
{{> layout/header}} <section> <!--title=제목&content=내용 -&ndash;&gt; application/x-www-form-urlencoded key 값은 input태그의 name value 값은 input 태그에 사용자가 입력하는 값 아래는 post로 게시글을 저장하는 방식 > 1.0방식 application/x-www-form-urlencoded은 기본값이며 적지 않아도 자동으로 적용된다.--> <form action="/board/save" method="post" enctype="application/x-www-form-urlencoded"> <input type="text" name="title" placeholder="제목"><br> <input type="text" name="content" placeholder="내용"><br> <button type="submit">글쓰기</button> </form> </section> </body> </html>
 
간단하게 게시글의 제목, 내용을 작성할 수 있는 페이지를 위와 같이 구성하였습니다.
section 위쪽에 적혀있는 내용들을 따로 템플릿 파일로 작성하여 활용한 모습입니다.

Controller :

 
@GetMapping("/board/save-form") public String save() { return "save-form"; } @PostMapping("/board/save") public void save(BoardRequest.SaveDTO saveDTO, HttpServletResponse response) { boardService.게시글쓰기(saveDTO); response.setStatus(302); response.setHeader("location", "/"); }
 
  • @PostMapping("/board/save"): 이 어노테이션은 /board/save 경로에 대한 HTTP POST 요청을 처리합니다.
  • public void save(BoardRequest.SaveDTO saveDTO, HttpServletResponse response): 이 메서드는 반환 타입이 void이며, BoardRequest.SaveDTO 객체와 HttpServletResponse 객체를 매개변수로 받습니다.
    • saveDTO: 클라이언트에서 전송된 게시글 데이터를 파싱한 객체입니다.
    • response: HTTP 응답을 설정할 수 있는 객체입니다.
  • boardService.게시글쓰기(saveDTO);: boardService를 통해 게시글 저장 작업을 수행합니다. saveDTO 객체에 담긴 데이터를 사용하여 새로운 게시글을 데이터베이스에 저장합니다.
  • response.setStatus(302);: 응답 상태 코드를 302 (Found)로 설정합니다. 이는 리다이렉션 응답을 의미합니다.
  • response.setHeader("location", "/");: Location 헤더를 설정하여 클라이언트를 루트 경로 (/)로 리다이렉트합니다. 이는 게시글 작성 후 메인 페이지로 리다이렉션하는 역할을 합니다.

Service :

 
@Transactional // 테스트 코드에서는 롤백을 해주고, 여기서는 커밋을 해준다. public void 게시글쓰기(BoardRequest.SaveDTO saveDTO) { boardRepository.save(saveDTO.getTitle(), saveDTO.getContent()); }

Repository :

 
public void save(String title, String content) { Query q = em.createNativeQuery("insert into board_tb(title, content, created_at) values(?, ?, now())"); q.setParameter(1, title); q.setParameter(2, content); q.executeUpdate(); }
 
 
 
 
 
 

작성 내용 테스트하기

 
 
 
notion image
 
 
글쓰기 링크를 클릭했을 때 get 요청으로 아래의 화면이 출력되는 것을 확인할 수 있으며,
 
notion image
 
 
간단하게 ‘테스트 제목’, ‘테스트 내용’ 과 같이 입력하고 글쓰기 버튼을 누르면
 
notion image
 
 
정상적으로 게시글이 추가된 것을 확인할 수 있습니다.
 
Share article

moohyun