728x90

이번 포스팅은 게시글 상세 글 확인을 위한 게시글 조회 기능을 구현합니다.

* 코드는 https://github.com/wmdwjddyd6/Board-Spring-MVC 에서 확인 가능합니다.

 

GitHub - wmdwjddyd6/Board-Spring-MVC

Contribute to wmdwjddyd6/Board-Spring-MVC development by creating an account on GitHub.

github.com


 

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. 결과

글 작성하고

테스트 데이터 입력

 

작성된 글 확인하고 제목을 클릭하면

list.jsp

 

조회가 잘 되네요.

post.jsp

 

+ Recent posts