728x90
이번 포스팅은 게시글 상세 글 확인을 위한 게시글 조회 기능을 구현합니다.
* 코드는 https://github.com/wmdwjddyd6/Board-Spring-MVC 에서 확인 가능합니다.
1. View (post.jsp)
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"
language="java"%>
<%@ page session="false"%>
<html>
<head>
<title>게시글 상세 화면</title>
</head>
<body>
<h1>게시글 상세 화면</h1>
<h2>
제목 :
<c:out value="${board.title}" />
</h2>
내용
<br />
<textarea rows="13" style="background-color: white;" readonly><c:out value="${board.content}" /></textarea> <br /><br />
<a href="/">메인으로 돌아가기</a>
</body>
</html>
- 이전 글에서 만든 list.jsp에서 제목을 클릭하면 보여줄 화면입니다.
- c:out으로 제목과 내용을 각각 보여줍니다.
- readonly 속성을 통해 수정을 불가능하게 해요.
2. Controller
@Controller
public class BoardController {
private static final Logger logger = LoggerFactory.getLogger(BoardController.class);
@Autowired
private BoardService boardService;
/*
* 게시글 상세 페이지 화면 이동
*/
@RequestMapping(method = RequestMethod.GET, value = "/board/post")
public String detailPost(Model model, @RequestParam(required = false) Long boardId) {
BoardDTO boardDTO = boardService.getPost(boardId);
model.addAttribute("board", boardDTO);
return "board/post";
}
}
- @RequestParam을 이용해서 url의 게시글 id를 받아옵니다.
- 예) http://localhost:8080/board/post?boardId=24
- 게시글 데이터를 담을 boardDTO를 선언하고 boardService를 통해 받아옵니다.
- 받아온 데이터를 View에 보여주기 위해 model.addAttribute를 사용
3. Service
public interface BoardService {
// 게시글 조회
BoardDTO getPost(Long boardId);
}
@Service
public class BoardServiceImpl implements BoardService {
private final BoardMapper boardMapper;
@Autowired
public BoardServiceImpl(BoardMapper boardMapper) {
this.boardMapper = boardMapper;
}
@Override
public BoardDTO getPost(Long boardId) {
BoardDTO boardDTO = boardMapper.selectPost(boardId);
return boardDTO;
}
}
- Service에선 Mapper로 id값을 넘겨주고, 게시글 데이터를 조회하여 가져옵니다.
4. Mapper
public interface BoardMapper {
// 게시글 조회
BoardDTO selectPost(Long boardId);
}
<!-- 게시글 조회 -->
<select id="selectPost" resultType="com.spring.shoppingmall.model.BoardDTO">
SELECT
<include refid="boardColumns" />
FROM
tb_board
WHERE
id = #{id}
</select>
- 각각 인터페이스와 xml 파일입니다.
- Service에서 넘겨받은 boardId를 #{id}로 사용하고 있습니다.
5. 결과
글 작성하고
작성된 글 확인하고 제목을 클릭하면
조회가 잘 되네요.
'Web > Spring' 카테고리의 다른 글
[Spring MVC] 4. 게시글 수정 (0) | 2022.03.31 |
---|---|
[Spring MVC] 2. 게시글 목록 조회 (0) | 2022.03.29 |
[Spring MVC] 1. 게시글 작성 (0) | 2022.03.22 |
[Spring MVC] org.springframework.http.converter.HttpMessageNotWritableException: No converter found for return value of type: class java.lang.Integer 해결 (0) | 2022.03.22 |
[Spring MVC] 0. 프로젝트 셋팅 (0) | 2022.03.08 |