지난 게시글은 여기 >>
Servlet 과 JSP를 이용한(모델2 형식) 블로그 만들기(14) - 해시 함수를 이용해서 비밀번호 해싱하기
우리가 블로그 같은거 하면 보는것! 조회수!
그런데 우리 블로그에는 readCount만 만들어놓고 정작 이걸 증가시킬 수 있는 옵션을 만들지 않았다.
이제 클릭될 때마다 올라갈 수 있는 옵션을 만들자.
근데 이거 진짜 간단하다. 상세보기로 액션이 생길때마다 그 게시글 아이디를 파라메터로 가지고 와서 그 게시글의 readCount를 1씩 올리면 된다.. 사실 처음해보면 로직을 생각하기 어려워서 그렇지 어마어마하게 간단하다..
상세보기를 누르면 액션을 통해 데이터베이스에 접근 할 것이다. 이 때를 노려(?) 함수를 작동시켜 값을 1 올리자.
그럼 상세보기를 누를 때 액션을 수정하면 되겠다.
- BoardDetailAction.java의 데이터베이스 접근 부분
BoardRepository boardRepository=BoardRepository.getInstance();
boardRepository.update(id);
DetailResponseDto dto = boardRepository.findById(id);
-BoardRepository.java의 update(id) 함수 부분.
public int update(int id) {
final String SQL="Update board set readCount=readCount+1 where id = ? ";
try {
conn=DBConn.getConnection();
pstmt = conn.prepareStatement(SQL);
//물음표 완성하기
pstmt.setInt(1, id);
pstmt.executeUpdate();
return 1;
} catch (Exception e) {
e.printStackTrace();
System.out.println(TAG+"update : "+e.getMessage());
}finally {
DBConn.close(conn, pstmt);
}
return -1;
}
이 값을 받았으니까.. 이 값을 response의 속성에 넣고.. (어차피 dto 내부에 예쁘게 들어가 있을것이다. dto에 값을 넣기 전에 먼저 누구보다 빠르게 조회수를 수정 했으니까) 이걸 그냥 화면에 출력하면 된다.
- detail.jsp의 작성자, 조회수 출력 부분
<br/><br/>
<h6>작성자 : <i>${dto.username },</i> 조회수 :${dto.board.readCount }</h6>
<br/>
<h3><b>${dto.board.title }</b></h3>
이 결과는 다음과 같다
반응형