< 게시글 본문보기 >
① notice.jsp 수정
- 글제목 클릭하면 글 본문을 볼 수 있도록 notice.jsp 안 게시글 목록에 contents.jsp로 링크걸어줌
<tr>
<td><%=bdto.getNum()%></td>
<td class="left">
<a href="contents.jsp?num=<%=bdto.getNum()%>&pageNum=<%=pageNum%>"><%=bdto.getSubject() %></a>
</td>
<td><%=bdto.getName() %></td>
<td><%=bdto.getDate()%></td>
<td><%=bdto.getReadcount() %></td>
</tr>
// notice.jsp
- &pageNum=<%pageNum%>
· 뒤로가기 눌렀을 때 해당 페이지에 머무를 수 있도록
· 3페이지의 글 중 하나 보다가 뒤로가기 누르면 1페이지로 돌아가는게 아니라 3페이지로
② contents.jsp
- 새로 만든 contents.jsp에 boardWrite.jsp 코드 전부 복붙한 후 <h1> 바꿔줌
<h1>글 본문 보기 페이지</h1>
<%
// 전달된 파라미터값 저장(num, pageNum)
int num = Integer.parseInt(request.getParameter("num"));
String pageNum = request.getParameter("pageNum");
// DAO 객체 생성
BoardDAO bdao = new BoardDAO();
// 조회수 1증가 - updateReadcount();
bdao.updateReadcount(num);
// 기존의 글정보를 가져오기
BoardDTO bdto = bdao.getBoard(num);
%>
<form method="post">
<table id="notice">
<tr><th class="tno" colspan="5">ITWILL 게시판</th></tr>
<tr>
<td colspan="2">글쓴이 : </td>
<td class="left" colspan="3"><input type="text" name="name" value="<%=bdto.getName()%>"></td>
</tr>
<tr>
<td colspan="2">글 제목 : </td>
<td class="left" colspan="3"><input type="text" name="subject" value="<%=bdto.getSubject()%>"></td>
</tr>
<tr>
<td colspan="2">글 내용 : </td>
<td class="left" colspan="3">
<textarea rows="10" cols="20" name="content"><%=bdto.getContent() %></textarea>
</td>
</tr>
</table>
// contents.jsp
- num은 DB로 갈거니까 int형으로 바꿔주고 pageNum은 DB로 안가니까 String 형태 그대로 저장
- DB 테이블에 조회수 컬럼을 만들어놨다시피 본문 보기 페이지로 들어가면 조회수가 1증가해야함
· updateReadcount() 메서드 생성
- 본문을 보여줘야하니까 DB에 저장된 게시글 들고와서 페이지로 보여줌
- 본문 보여주는 건 게시글의 고유한 num으로 구분
- 본문에서는 비밀번호를 삭제했고 글쓴이와 글제목을 value 속성을 이용하여 dbto.get~ 내용 들고옴
③ updateReadcount(num) 메서드
- BoardDAO.java에 updateReadcount(num) 메서드를 생성한다
// updateReadcount(num)
public void updateReadcount(int num) {
try {
// 1.2 디비연결
con = getCon();
//3. sql 구문 & pstmt 객체
// 조회수(readcount)를 기존값에서 1증가(update)
sql = "update itwill_board set readcount=readcount+1 where num=?";
pstmt = con.prepareStatement(sql);
// ?
pstmt.setInt(1, num);
// 4. sql 실행
pstmt.executeUpdate();
System.out.println("DAO : 조회수 1증가");
} catch (Exception e) {
e.printStackTrace();
} finally {
closeDB();
}
}
// updateReadcount(num) 끝
// BoardDAO.java
- sql의 수식계산 특징을 이용하여 조회수를 증가시킬 수 있다.
· readcount = readcount + 1
④ getBoard(num) 메서드 생성
- 게시글 번호( num ) 조건에 맞는 게시글 정보를 DB에서 들고오는 메서드
// getBoard(num)
public BoardDTO getBoard(int num) {
BoardDTO bdto = null;
// 1.2 디비연결
try {
con = getCon();
// 3. sql 작성(select) & pstmt 객체 생성
sql = "select * from itwill_board where num=?";
pstmt = con.prepareStatement(sql);
// ?
pstmt.setInt(1, num);
// 4. sql 실행
rs = pstmt.executeQuery();
// 5. 데이터처리
if(rs.next()) {
bdto = new BoardDTO();
bdto.setContent(rs.getString("content"));
bdto.setDate(rs.getDate("date"));
bdto.setFile(rs.getString("file"));
bdto.setIp(rs.getString("ip"));
bdto.setName(rs.getString("name"));
bdto.setNum(rs.getInt("num"));
bdto.setPass(rs.getString("pass"));
bdto.setRe_lev(rs.getInt("re_lev"));
bdto.setRe_ref(rs.getInt("re_ref"));
bdto.setRe_seq(rs.getInt("re_seq"));
bdto.setReadcount(rs.getInt("readcount"));
bdto.setSubject(rs.getString("subject"));
} // if
System.out.println("DAO : 글정보 저장완료 !");
} catch (Exception e) {
e.printStackTrace();
}finally {
closeDB();
}
return bdto;
}
// getBoard(num) 끝
// BoardDAO.java
'자바 웹 개발자가 될거야 > JSP' 카테고리의 다른 글
[JSP] 게시글 삭제하기 (0) | 2021.12.21 |
---|---|
[JSP] 게시글 본문 수정하기 (0) | 2021.12.21 |
[JavaScript] 자바스크립트 호출방법 (0) | 2021.12.17 |
[JavaScript] 자바스크립트 특징 / 유의사항 (0) | 2021.12.17 |
[Eclipse] Tern 이클립스 자동완성 기능 (0) | 2021.12.17 |