상세 컨텐츠

본문 제목

MVC Model2 게시판 (CRUD) - 게시글 상세보기 (Read)

web/게시판 CRUD(생성,수정,삭제, 읽기) - MVC2

by 매일매일 배우는 개발자 2021. 1. 20. 13:02

본문

728x90

이번엔 DB에 있는 데이터들을 나타내는 게시글 상세보기 만들어 보자.

 

게시글 상세보기는 목록리스트에 있는 글을 클릭하면 그에 해당하는 정보를 들고와 상세보기 페이지에 나타내는것이다.

 

list.jsp에서 번호를 a태그를 추가해 주자. (여기서는 번호를 기준으로 잡았지만, 타이틀 등 다른걸로 기준을 잡아도 상관이 없다)

 

 

list.jsp

<h1>여기는 LIST 페이지 입니다.</h1>

<form action="${contextPath }/member/listArticles.do" method="post">

				
		<div><h2>?(나중에 총 갯수)</h2>개의 상품이 조회되었습니다</div>
		
	<table>	
		<tr>
			<td>번호</td>
			<td>이름</td>
			<td>아이디</td>
		</tr>		
			<c:forEach var="tistoryList" items="${tistoryList}">			
			<tr>
				<!-- a태그 클릭시 viewContent.do를 호출한다 -->
				<td><a href="${contextPath }/member/viewContent.do?no=${tistoryList.no}">${tistoryList.no }</a></td>
				<td>${tistoryList.username }</td>
				<td>${tistoryList.id }</td>		
			</tr>
			</c:forEach>
	</table>			
</form>

 

 


Controller.java

if(action.equals("/viewContent.do")) {
			
			int no = Integer.parseInt(request.getParameter("no"));				
			
			TistoryVO vo = new TistoryVO();			  
			  
			vo = tistoryService.readContent(no);
			  
			  if(vo == null) {
				  System.out.println("vo detail fail");
				  
			  }
			  
			 request.setAttribute("vo", vo);
			 
			 
			 nextPage="/list/viewContent.jsp";
			 
			
		}

Controller에서 list.jsp에서 a태그에 걸려있는 viewContent.do를 받아온다.

이때 반드시 리스트 페이지의 "no"을 받아 int형으로 형변환을 한다.

 

vo를 request저장영역에 세팅한후 viewContent.jsp로 다시 보내고 있다.

 


Service.java

public TistoryVO readContent(int no) {
		TistoryVO tistoryVO = tistoryDAO.selectContent(no);
		return tistoryVO;
	}

DAO.java

//readContent
	public TistoryVO selectContent(int no) {	
		
		TistoryVO tistoryVO = null;
		
		try {
			conn = DBConnection.getConnection();
			/* 파라미터에서 받아온 no값에 맞는 하나의 ROW만 DB에서 받아온다 */
			String query = "SELECT * FROM class WHERE no = ?";
			pstmt = conn.prepareStatement(query);
			pstmt.setInt(1, no);
			rs = pstmt.executeQuery();
			if(rs.next()) {				
				tistoryVO = new TistoryVO();
				
				tistoryVO.setNo(rs.getInt("no"));
				tistoryVO.setUsername(rs.getString("username"));
				tistoryVO.setId(rs.getString("id"));		
			}
			return tistoryVO;
		} catch (Exception e) {
			System.out.println("selectContent : " + e.toString());
		}finally {
			freeResource();
		}
		
		return tistoryVO;
	}//end of selectContent

매개변수로 받아온 no의 값에 맞는 하나의 열을 가져오는 DAO 메소드이다.

 


content.jsp

<c:set var="vo" value="${vo }" />

	<h1>여기는 ${vo.no }번 게시판 상세보기 페이지 입니다.</h1>
	<c:out value="${vo }"></c:out>
	<table>
		<tr>
			<td>번호</td>
			<td>이름</td>
			<td>아이디</td>
		</tr>	
		<tr>
			<td>${vo.no }</td>
			<td>${vo.username }</td>
			<td>${vo.id }</td>
		<tr>
	</table>

게시판 상세보기 페이지이다. request 저장영역에 있던 vo 값을 JSTL문법을 통해 나타낼수 있다.


 

상세보기창

 

20번 글을 클릭하면 이렇게 20번창에 대한 글이 나온다.

728x90

관련글 더보기