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