게시물 제목을 상세게시물 페이지와 연결하기
<c:forEach items="${bList }" var="board" varStatus="i">
<tr>
<td>${i.count }</td>
<td><a href="/board/detail.kh?boardNo=${board.boardNo }">${board.boardTitle }</td>
<td>${board.boardWirter }</td>
<td>${board.bCreateDate }</td>
<td>${board.boardCount }</td>
<td>0</td>
</tr>
</c:forEach>
<tr align="center" height="20">
<td colspan="6">
<!-- startNavi가 1일이 아닐때만 출력 -->
<c:if test="${startNavi ne 1 && startNavi > 0}">
<a href="/board/list.kh?page=${startNavi-1 }">이전</a>
</c:if>
<!-- p는 기준을 삼을 임시변수 startNavi부터 시작해 endNavi까지 출력한다 -->
<c:forEach var="p" begin="${startNavi }" end="${endNavi }" >
<a href="/board/list.kh?page=${p }">${p }</a>
</c:forEach>
<!-- endNavi가 maxPage와 같지 않을때만 출력 -->
<c:if test="${endNavi < maxPage }">
<a href="/board/list.kh?page=${endNavi+1 }">다음</a>
</c:if>
</td>
<tr>
<td colspan="6" align="center">
<button onclick="location.href='/board/writeView.kh';">글쓰기</button>
</td>
</tr>
- 게시판 제목행을
<a href="/board/detail.kh?boardNo=${board.boardNo }">
연결하였다,
/board/detail.kh
에 boardNo를 get방식으로 전송하여 detail값을 출력할것을 예상할수있다.
게시물을 출력할 jsp만들기
<table align="center" border="1">
<tr>
<td>제목</td>
<td>${board.boardTitle }</td>
</tr>
<tr>
<td>작성자</td>
<td>${board.boardWirter }</td>
</tr>
<tr>
<td>작성일</td>
<td>${board.bCreateDate }</td>
</tr>
<tr>
<td>내용</td>
<td>
${board.boardContents }
<br>
<c:if test="${board.boardRename ne null}">
<img alt="본문이미지" src="/resources/buploadFiles/${board.boardRename }">
</c:if>
</td>
</tr>
<tr>
<td colspan="2"><input type="button" value="수정" onclick="location.href='/board/modifyView.kh?boardNo=${board.boardNo}';">
<button type="button" onclick="location.href='/board/list.kh?page=${pageNow }';">목록</button>
<button type="button" onclick="remove()">삭제</button>
</td>
</tr>
</table>
- 데이터베이스에서 출력해줄 상세 게시물은 board클래스의 인스탠스로 출력할 것이기에 boarc클래스의 변수
${board.boardName }
이런방식으로 값을 넣어준다.
- 지난번에 이미지를 넣어주었기때문에 이미지를 넣어준 rename이라는 변수를 활용하여 이미지를 저장한 상대폴더와 연결해 준다
- c:if태그를 활용해 rename의 값이 있을때만 출력되도록한다.
컨트롤러 만들기
@RequestMapping(value="/board/detail.kh", method = RequestMethod.GET)
public ModelAndView boardDetailView(ModelAndView mv,
@RequestParam ("boardNo") Integer boardNo,
HttpSession session) {
if(boardNo != null) {
Board board = bService.printOneVyNo(boardNo);
session.setAttribute("boardNo", boardNo);
try {
mv.addObject("board", board);
mv.setViewName("/board/detail");
}catch (Exception e) {
mv.addObject("mgs",e.getMessage());
mv.setViewName("/common/errorPage");
}
}
else {
mv.addObject("mgs","게시물 선택 오류");
mv.setViewName("/common/errorPage");
}
return mv;
}
- jsp에서 받은값을 가지고 상세 정보값을 출력한다
- boardNo값을 세션에 저장해 필요할때 사용할수 있도록 했다.
Service & Store&Mapper
Service
@Override
public Board printOneVyNo(Integer boardNo) {
Board board = bStore.selectOnbyNo(boardNo, session);
return board;
}
Store
@Override
public Board selectOnbyNo(Integer boardNo, SqlSessionTemplate session) {
Board board = session.selectOne("BoardMapper.selectBoardOne", boardNo);
return board;
}
Mapper
<select id="selectBoardOne" resultMap="boardResultMap">
select * from board_tbl where board_no = #{boardNo}
</select>
- Store에서 사용한
session.selectOne("BoardMapper.selectBoardOne", boardNo);
로 연결된 mapper의 주소를 사용한다,. boardNo는 전달하여 쿼리문에 필요한 값으로 사용한다.
- resultMap과 연결시켜 board안에 select로 받아온 column의 값을 넣어 Store로 반환한다.