조회수 기능
- 새로 고침할 때마다 조회 수가 증가해서 조회 수가 조작될 수 있는 것을 방지하는 로직이다.
- 쿠키에 조회한 내용을 기록해놓고, 한 번 조회하고나면 그 뒤에는 새로고침하거나 다시 조회했던 게시물을 누른다고 해서 조회 수가 증가되지 않도록 한다.
01. ViewServlet.java
- 쿠키에 조회한 이력이 있는지 확인하는 로직
- Cookie 객체를 활용한다.
Cookie[] cookies = request.getCookies();
String boardHistory = "";
boolean hasRead = false;
if(cookies != null) {
String name = null;
String value = null;
for(Cookie cookie : cookies) {
name = cookie.getName();
value = cookie.getValue();
if("boardHistory".equals(name)) {
boardHistory = value;
if(value.contains("|" + no + "|")) {
hasRead = true;
break;
}
}
}
}
// 2. 읽은 적 없는 게시글이면 cookie에 기록
if(!hasRead) {
Cookie cookie = new Cookie("boardHistory", boardHistory + "|" + no + "|");
cookie.setMaxAge(-1);
response.addCookie(cookie);
}
02. BoardService.java
- 기존에 연결되어있던 게시글 번호로 해당 게시글을 찾는 메소드 findBoardbyNo의 매개값으로 boolean hasRead를 추가한다.
- 조회수 증가하는 로직을 추가한다.
if(board != null && !hasRead) {
int result = dao.updateHits(connection, board);
if(result > 0) {
commit(connection);
} else {
rollback(connection);
}
}
03. BoardDao.java
- PreparedStatement 객체 생성
- UPDATE 쿼리 작성
- PreparedStatement 의 변수에는 connection 객체로 얻어온 PreparedStatement 쿼리 결과를 담아준다.
- 위치 홀더에 해당하는 값 지정
- close(pstmt)
'Programming > SERVER' 카테고리의 다른 글
DAY 127. MVC2 패턴 - 댓글 기능 (0) | 2021.12.23 |
---|---|
DAY 126. MVC2 패턴 - 게시글 상세 조회 (0) | 2021.12.22 |
DAY 125. MVC2 패턴 - 게시글 삭제, 게시글 수정 (0) | 2021.12.21 |
DAY 124. MVC2 패턴 - 게시글 작성 (0) | 2021.12.20 |
DAY 123. MVC2 패턴 - 게시글 목록, 페이징 (0) | 2021.12.19 |