728x90
ModelAndView
화면단으로 이동하기 위해서 ModelAndView라는 메서드를 사용할 수 있습니다. 이 방법을 사용하면, 이전에 사용한 ResponseEntity 메서드보다 간단해집니다.
@GetMapping("/board-list")
public ModelAndView getBoardList() {
ModelAndView mv = new ModelAndView();
List<Board> boardList = boardService.getBoardList();
List<BoardDTO> boardDTOList = new ArrayList<BoardDTO>();
for(Board b : boardList) {
BoardDTO returnBoardDTO =
BoardDTO.builder().boardNo(b.getBoardNo())
.boardTitle(b.getBoardTitle())
.boardContent(b.getBoardContent())
.boardWriter(b.getBoardWriter())
.boardRegdate(b.getBoardRegdate().toString())
.boardCnt(b.getBoardCnt())
.build();
boardDTOList.add(returnBoardDTO);
}
mv.addObject("boardList", boardDTOList);
mv.setViewName("board/getBoardList.html");
return mv;
}
READ
이번에는 getBoard 메서드를 만들어보고, ModelAndView 방식으로 처리해보겠습니다. 방금전에 본 메서드는 한번에 데이터베이스에 있는 모든 것을 조회하는 것이라면 하나씩 세부적인 내용을 조회하는 메서드도 필요합니다.
이전과 다른 점을 살펴보면, 먼저 @PathVariable 어노테이션을 통해 boardNo를 직접 매핑 url에 입력할 수 있습니다. 또한 BoardDTO에서 builder 메서드를 통해 우리가 컬럼으로 지정한 것을 한번에 담아 bulid 처리할 수 있습니다.
@GetMapping("/board/{boardNo}")
public ModelAndView getBoard(@PathVariable int boardNo) {
ModelAndView mv = new ModelAndView();
Board board = boardService.getBoard(boardNo);
BoardDTO returnBoardDTO = BoardDTO.builder()
.boardNo(board.getBoardNo())
.boardTitle(board.getBoardTitle())
.boardContent(board.getBoardContent())
.boardWriter(board.getBoardWriter())
.boardRegdate(board.getBoardRegdate().toString())
.boardCnt(board.getBoardCnt())
.build();
List<BoardFile> boardFileList = boardService.getBoardFileList(boardNo);
List<BoardFileDTO> boardFileDTOList =
new ArrayList<BoardFileDTO>();
for(BoardFile boardFile : boardFileList) {
BoardFileDTO boardFileDTO = boardFile.EntityToDTO();
boardFileDTOList.add(boardFileDTO);
}
mv.addObject("board", returnBoardDTO);
mv.addObject("boardFileList", boardFileDTOList);
mv.setViewName("board/getBoard.html");
return mv;
}
그 외에도 EntityToDTO라는 메서드를 사용해서 좀 더 편리하게 파일관리도 가능하다는 점이 있겠습니다. 참고로, EntityToDTO 메서드는 별도로 제작해서 사용하며, 다음과 같이 작성합니다. BoardFile이라는 entity를 제작하고, 멤버변수를 선언한 다음에 이 메서드에서 bulider 체이닝으로 완성하면 됩니다.
public BoardFileDTO EntityToDTO() {
BoardFileDTO boardFileDTO = BoardFileDTO.builder()
.boardNo(this.board.getBoardNo())
.boardFileNo(this.boardFileNo)
.boardFileName(this.boardFileName)
.boardFilePath(this.boardFilePath)
.boardFileOrigin(this.boardFileOrigin)
.boardFileCate(this.boardFileCate)
.build();
return boardFileDTO;
}
CREATE
입력 화면을 보여서 출력해야할 경우가 있습니다. 그럴 때는 생각보다 간단하게 insertBoard 파일을 만들고 그것을 매핑해주면 됩니다.
@GetMapping("/insert-board-view")
public ModelAndView insertBoardView() {
ModelAndView mv = new ModelAndView();
mv.setViewName("board/insertBoard.html");
return mv;
}
이렇게 ModelAndView로도 간단하게 조회하고 입력할 수 있음을 알 수 있습니다.
'네이버 클라우드 캠프 > Spring' 카테고리의 다른 글
[Spring Boot] 게시판 제작하기(4) (0) | 2023.06.22 |
---|---|
[Spring Boot] 게시판 구현하기(3) (0) | 2023.06.22 |
[Spring Boot] 게시판 구현하기(2) (0) | 2023.06.21 |
[Spring Boot] 게시판 구현하기(1) (0) | 2023.06.21 |
[Spring Framework] 게시판 구현하기(1) (0) | 2023.06.19 |