이전 포스팅에서 게시판 목록 기능을 구현하였는데요.
이번 포스팅에서는 게시판 조회 기능을 구현하려고합니다.
게시판 조회 기능은 게시판 목록에서 제목을 클릭했을때 번호에 해당하는 내용들을 보여주는 페이지 인데요.
MP_BOARD테이블을 만들때 BNO에 PRIMARY KEY를 줬던 이유가 게시물을 조회했을때 고유의값이 필요하기 때문입니다.
게시판 목록에서 글 제목으로 게시물을 구분할 수 있을것도 같지만 같은 제목의 게시물을 작성할 수도 있기 때문에
글 제목만으로는 게시물을 구분할 수 없습니다. 그래서 게시물을 구분할 수 있도록 번호(BNO)가 필요합니다.
WHERE BNO = #{bno}를 보시면 WHERE에 BNO값을 넣어줘서 제목을 클릭했을때 그 번호에 해당하는 게시물을 조회하게끔 쿼리를 BoardMapper.xml에 추가해줍니다.
<select id="read" parameterType="int" resultType="kr.co.vo.BoardVO">
SELECT BNO
, TITLE
, CONTENT
, WRITER
, REGDATE
FROM MP_BOARD
WHERE BNO = #{bno}
</select>
BoardDAO에 코드를 추가해 줍니다.
BoardDAO
// 게시물 조회
public BoardVO read(int bno) throws Exception;
BoardDAOImpl에 코드를 추가해줍니다.
BoardDAOImpl
// 게시물 조회
@Override
public BoardVO read(int bno) throws Exception {
return sqlSession.selectOne("boardMapper.read", bno);
}
BoardService에 코드를 추가해줍니다.
BoardService
// 게시물 목록 조회
public BoardVO read(int bno) throws Exception;
BoardServiceImpl에 코드를 추가해줍니다.
BoardServiceImpl
// 게시물 목록 조회
@Override
public BoardVO read(int bno) throws Exception {
return dao.read(bno);
}
현재 게시판 목록에서는 bno값들이 다 있기때문에 이것을 불러와야합니다
bno값들은 BoardVO에 들어있기 때문에 서비스를 실행할때 그 번호를 넣어주어서 read라는 이름으로 값을 저장합니다.
// 게시판 조회
@RequestMapping(value = "/readView", method = RequestMethod.GET)
public String read(BoardVO boardVO, Model model) throws Exception{
logger.info("read");
model.addAttribute("read", service.read(boardVO.getBno()));
return "board/readView";
}
src/webapp/WEB_INF/views/board폴더에 readView.jsp파일을 만들고 코드를 추가해줍니다.
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<html>
<head>
<title>게시판</title>
</head>
<body>
<div id="root">
<header>
<h1> 게시판</h1>
</header>
<hr />
<nav>
홈 - 글 작성
</nav>
<hr />
<section id="container">
<form role="form" method="post">
<table>
<tbody>
<tr>
<td>
<label for="bno">글 번호</label><input type="text" id="bno" name="bno" value="${read.bno}"/>
</td>
</tr>
<tr>
<td>
<label for="title">제목</label><input type="text" id="title" name="title" value="${read.title}"/>
</td>
</tr>
<tr>
<td>
<label for="content">내용</label><textarea id="content" name="content"><c:out value="${read.content}" /></textarea>
</td>
</tr>
<tr>
<td>
<label for="writer">작성자</label><input type="text" id="writer" name="writer" value="${read.writer}" />
</td>
</tr>
<tr>
<td>
<label for="regdate">작성날짜</label>
<fmt:formatDate value="${read.regdate}" pattern="yyyy-MM-dd"/>
</td>
</tr>
</tbody>
</table>
</form>
</section>
<hr />
</div>
</body>
</html>
src/webapp/WEB_INF/views/board/list.jsp파일을 열고 코드를 수정해줍니다.
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<html>
<head>
<title>게시판</title>
</head>
<body>
<div id="root">
<header>
<h1> 게시판</h1>
</header>
<hr />
<nav>
홈 - 글 작성
</nav>
<hr />
<section id="container">
<form role="form" method="post" action="/board/write">
<table>
<tr><th>번호</th><th>제목</th><th>작성자</th><th>등록일</th></tr>
<c:forEach items="${list}" var = "list">
<tr>
<td><c:out value="${list.bno}" /></td>
<td>
<a href="/board/readView?bno=${list.bno}"><c:out value="${list.title}" /></a>
</td>
<td><c:out value="${list.writer}" /></td>
<td><fmt:formatDate value="${list.regdate}" pattern="yyyy-MM-dd"/></td>
</tr>
</c:forEach>
</table>
</form>
</section>
<hr />
</div>
</body>
</html>
서버를 실행시키고 게시판 목록(board/list.jsp)에 접속해서 제목을 클릭하여 들어가면 그 번호에 해당하는 내용들이 나오게됩니다.
다음포스팅에서는 게시글 수정과 삭제에 대해서 포스팅하겠습니다.