inblog logo
|
moohyun
    스프링부트

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

    화낼거양's avatar
    화낼거양
    Nov 18, 2024
    서비스 구현 (게시글작성)
    Contents
    페이지 구성 :Controller :Service :Repository :작성 내용 테스트하기
     
     

    페이지 구성 :

     
    {{> 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
    Contents
    페이지 구성 :Controller :Service :Repository :작성 내용 테스트하기

    moohyun

    RSS·Powered by Inblog