1. View

익명 글쓰기 게시판이다. 회원에게 받을 데이터는 작성자 이름, 제목, 내용이다.
데이터를 받기 위해 DTO 를 생성한다.
2. DTO 생성
board/BoardRequest
public class BoardRequest {
@Data
public static class saveDTO{
private String author ;
private String title ;
private String content ;
}
}
작성자, 제목, 내용을 전달받는 DTO 를 만들었다.
3. 컨트롤러
@GetMapping("/board/saveForm")
public String saveForm() {
return "board/saveForm";
}
@PostMapping("/board/save")
public String save(BoardRequest.saveDTO requestDTO,HttpServletRequest request){
// 유효성 검사
if(requestDTO.getTitle().length()>20){
request.setAttribute("status",400);
request.setAttribute("msg","제목은 20자를 넘을 수 없습니다.");
return "error/40x";
}
if(requestDTO.getContent().length()>20){
request.setAttribute("status",400);
request.setAttribute("msg","내용은 20자를 넘을 수 없습니다.");
return "error/40x";
}
//DTO 를 레파지토리에 전달
boardRepository.save(requestDTO);
return "redirect:/";
}
컨트롤러를 통해 유효성 검사 후 레파지토리로 DTO 를 전달한다.
3. 레파지토리
board/BoardRepository
@Transactional
public void save(BoardRequest.saveDTO requestDTO) {
Query query = em.createNativeQuery("insert into board_tb(author,title,content) values (?,?,?)");
query.setParameter(1,requestDTO.getAuthor());
query.setParameter(2,requestDTO.getTitle());
query.setParameter(3,requestDTO.getContent());
query.executeUpdate();
}
회원이 입력한 데이터를 DB에 추가한다.
4. View
resources/board/saveForm.mustache
{{> layout/header}}
<div class="container p-5">
<div class="card">
<div class="card-header"><b>익명 글쓰기 화면입니다</b></div>
<div class="card-body">
<form action="/board/save" method="post">
<div class="mb-3">
<input type="text" class="form-control" placeholder="Enter author" name="author">
</div>
<div class="mb-3">
<input type="text" class="form-control" placeholder="Enter title" name="title">
</div>
<div class="mb-3">
<textarea class="form-control" rows="5" name="content"></textarea>
</div>
<button type="submit" class="btn btn-primary form-control">글쓰기완료</button>
</form>
</div>
</div>
</div>
{{> layout/footer}}
글쓰기페이지(saveForm) 에서 작성한 글을 save 페이지로 전달한다.

글을 작성한다.

게시글이 추가된다.
Share article