1. viewCookies.jsp

쿠키에 들어있는 값들을 보여준다. 여기에 같은 조회번호가 있다면 더이상 카운트를 올려 주지 않으면 된다.


<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR" session="true"%>

<%
 Cookie[] cookies = request.getCookies();

 if(cookies == null || cookies.length == 0){
  
  out.println("쿠키없음");
  return; //return 실행의 제어권을 반환해준다.
  
 }

 for(Cookie ck:cookies){
  
  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 를 입력할 때 마다 쿠키에 저장되고 다시 새로 고침을 해도 같은 번호는 들어가지 않는다. 이 방법을 이용해서 게시물 조회수 관리라든지 쇼핑몰에서 한번 클릭한 상품을 옆에 보여주는 기능도 구현 할 수 있다.

+ Recent posts