Cookie를 사용한 게시물 조회 중복 방지
1. viewCookies.jsp
쿠키에 들어있는 값들을 보여준다. 여기에 같은 조회번호가 있다면 더이상 카운트를 올려 주지 않으면 된다.
<% if(cookies == null || cookies.length == 0){ for(Cookie ck:cookies){ - 실행 화면
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR" session="true"%>
Cookie[] cookies = request.getCookies();
out.println("쿠키없음");
return; //return 실행의 제어권을 반환해준다.
}
out.println(ck.getName() + ":" + ck.getValue());
out.println("<hr>");
}
%>
2. viewBbs.jsp
이 부분에서 bbsno 페이지 번호를 받고, 쿠키를 받아와서 쿠키의 name에 VIEWCOOKIE가 있는지 검색하고 없으면 VIEWCOOKIE 를 만들어 주고 있으면 bbsno를 추가한다. '|' 는 번호를 구분하기 위해 같이 입력한다.
<%@ page contentType="text/html; charset=EUC-KR"
session="true"%>
<%
String bbsno = request.getParameter("bbsno");
Cookie[] cookies = request.getCookies();
Cookie viewCookie = null;
if(cookies != null && cookies.length > 0){
for(int i = 0; i< cookies.length; i++){
if(cookies[i].getName().equals("VIEWCOOKIE")){ //Cookie의 name이 VIEWCOOKIE와 일치하는 쿠키를 viewCookie에 넣어준다.
viewCookie = cookies[i];
}
}
}
//만일 viewCookie없다면
if(viewCookie == null){
System.out.println("VIEWCOOKIE 없음");
Cookie newCookie = new Cookie("VIEWCOOKIE","|"+bbsno+"|"); //("VIEWCOOKIE"는 name, "|"+bbsno+"|" 는 value 다.
response.addCookie(newCookie);
}else{
System.out.println("VIEWCOOKIE 있음");
String value = viewCookie.getValue();
if(value.indexOf("|"+bbsno+"|") < 0){ // 입력한 번화와 일치하는 번호가 없으면 추가한다.
value = value+"|"+bbsno+"|";
viewCookie.setValue(value);
response.addCookie(viewCookie);
}
}
%>
주소창에 처음으로
http://127.0.0.1:8081/web01_10/viewBbs.jsp?bbsno=100 bbsno를 100으로 주고 들어가면 "VIEWCOOKIE 없음" 이라고 나온다.
그리고
http://127.0.0.1:8081/web01_10/viewCookies.jsp 들어가보면 100 이 추가 된 모습을 볼 수 있다.
다시
http://127.0.0.1:8081/web01_10/viewBbs.jsp?bbsno=100 창에서 새로고침을 누르면 위에 사진 처럼
"VIEWCOOKIE 있음" 이라는 메시지가 뜨는 것을 확인 할 수 있다.
http://127.0.0.1:8081/web01_10/viewBbs.jsp?bbsno=101 번 추가 했을 경우
http://127.0.0.1:8081/web01_10/viewBbs.jsp?bbsno=102 번 추가 했을 경우
이렇게 새로운 bbsno 를 입력할 때 마다 쿠키에 저장되고 다시 새로 고침을 해도 같은 번호는 들어가지 않는다. 이 방법을 이용해서 게시물 조회수 관리라든지 쇼핑몰에서 한번 클릭한 상품을 옆에 보여주는 기능도 구현 할 수 있다.
'Backend > JSP' 카테고리의 다른 글
D-DAY 계산 (0) | 2019.11.08 |
---|---|
JSP 정리 (0) | 2019.03.29 |
파라미터를 selected하는 방법 (0) | 2019.02.21 |
Eclipse Tomcat 연동 시 프로젝트명 숨기기 (0) | 2019.02.21 |
java.lang.ClassNotFoundException 에러 해결 (2) | 2019.02.17 |