5.1 Service

게시글 상세 조회는 기본 키(PK)를 활용하여 단일 레코드를 조회하는 방식으로 수행됩니다.

BoardService 클래스에 게시글 상세 조회 메서드를 구현하고, 매개변수로 받은 id를 이용해 해당 게시글을 조회합니다.

BoardService.java

public Board 게시글상세(Integer id) {
    Board board = boardRepository.findById(id);
    return board;
}

5.2 Controller

컨트롤러에서는 외부로부터 id 값을 전달받아야 합니다. id 값은 View에서 전달받습니다.

index.mustache 의 tr 행은 onclick 이벤트가 등록되어 있어서 사용자가 클릭하면 /boards/{{id}} 경로로 요청이 전송됩니다.

index.mustache

image.png

뷰에서 전달된 id 값은 @GetMapping 경로 매핑에 포함되며, @PathVariable 어노테이션을 사용해 URI의 {id} 값을 메서드 매개변수로 바인딩하여 활용할 수 있습니다.

BoardService의 게시글상세 메서드를 호출합니다.

BoardController.java

@GetMapping("/boards/{id}")
public String detail(@PathVariable("id") Integer id) {
    Board board = boardService.게시글상세(id);
    return "board/detail";
}

5.4 Request 담기

detail() 메서드에 HttpServletRequest 매개변수를 추가하고, 조회한 데이터를 model 이라는 키로 request에 저장하여 뷰에 전달합니다.

BoardController.java