64. spring으로 상세 게시물 보기

hanahana·2022년 9월 13일
0

Spring 학원수강

목록 보기
16/45
post-thumbnail

게시물 제목을 상세게시물 페이지와 연결하기

<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, 
//아까 ?=문으로 받은 boardNo를 null값을 인식할수있도록 integer로 형변환 해준다
			HttpSession session) {

	
		

		if(boardNo != null) {
		Board board = bService.printOneVyNo(boardNo);
		session.setAttribute("boardNo", 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로 반환한다.
profile
hello world

0개의 댓글