페이지 구성 :
{{> layout/header}}
<section>
<!--title=제목&content=내용 -–> 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();
}
작성 내용 테스트하기

글쓰기 링크를 클릭했을 때 get 요청으로 아래의 화면이 출력되는 것을 확인할 수 있으며,

간단하게 ‘테스트 제목’, ‘테스트 내용’ 과 같이 입력하고 글쓰기 버튼을 누르면

정상적으로 게시글이 추가된 것을 확인할 수 있습니다.
Share article