스프링 부트 게시판 만들기 - 3. 글 상세보기 페이지 만들기
이번 포스팅에서는 스프링 부트를 사용하여 게시판의 글 상세보기 페이지를 만드는 방법에 대해 알아보겠습니다.
1. 프로젝트 구조
먼저, 이전 포스팅에서 생성한 스프링 부트 프로젝트의 구조를 확인해야 합니다. 프로젝트는 일반적으로 다음과 같이 구성됩니다.
└── src
├── main
│ ├── java
│ │ └── com.example.board
│ │ ├── controller
│ │ ├── model
│ │ └── repository
│ └── resources
│ ├── static
│ └── templates
└── test
└── java
└── com.example.board
2. 글 상세보기 기능
글 상세보기 기능을 구현하기 위해서는 다음과 같은 단계를 따라야 합니다.
2.1. Controller 작성
먼저, Controller 클래스를 작성해야 합니다. 해당 클래스는 사용자의 요청을 처리하고, DB에서 해당 글의 정보를 가져와야 합니다. 아래는 예시입니다.
@Controller
public class BoardController {
private final BoardRepository boardRepository;
@Autowired
public BoardController(BoardRepository boardRepository) {
this.boardRepository = boardRepository;
}
@GetMapping("/board/{id}")
public String getBoardDetail(@PathVariable("id") Long id, Model model) {
// DB에서 해당 글 정보 가져오기
Board board = boardRepository.findById(id).orElse(null);
// 모델에 데이터 추가
model.addAttribute("board", board);
return "board/detail";
}
}
위 코드에서 BoardRepository
는 DB에서 글 정보를 가져오기 위해 사용되는 Repository입니다.
2.2. View 작성
Controller에서 데이터를 전달받기 위해서는 적절한 View가 필요합니다. 해당 View를 작성하기 위해 templates
폴더 안에 board
폴더를 생성하고, detail.html
파일을 생성합니다. 아래는 예시입니다.
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title>글 상세보기</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<h2>글 상세보기</h2>
<table>
<tr>
<th>제목</th>
<td th:text="${board.title}"></td>
</tr>
<tr>
<th>작성자</th>
<td th:text="${board.author}"></td>
</tr>
<tr>
<th>내용</th>
<td th:text="${board.content}"></td>
</tr>
</table>
<!-- 기타 내용 -->
</body>
</html>
위 코드에서 Thymeleaf의 표현식을 사용하여 Controller에서 전달받은 데이터를 화면에 출력하고 있습니다.
3. 동작 확인
위의 코드를 작성하고 실행하면, http://localhost:8080/board/{id}
형태의 URL을 통해 글 상세보기 페이지에 접속할 수 있습니다. {id}
부분에는 조회하려는 글의 고유한 식별자가 들어가야 합니다.
이로써 스프링 부트를 사용하여 게시판의 글 상세보기 페이지를 구현하는 방법에 대해 알아보았습니다. 이전 포스팅에서 구현한 목록 페이지와 연동하여 완전한 게시판을 구현할 수 있습니다.
댓글