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 를 입력할 때 마다 쿠키에 저장되고 다시 새로 고침을 해도 같은 번호는 들어가지 않는다. 이 방법을 이용해서 게시물 조회수 관리라든지 쇼핑몰에서 한번 클릭한 상품을 옆에 보여주는 기능도 구현 할 수 있다.
'JavaEE' 카테고리의 다른 글
DBCP를 이용한 Connection Pool 설정 방법 (0) | 2009.08.29 |
---|---|
server.xml 의 tomcatThreadPool 과 커넥션 풀의 속성에서 maxActive의 관계 (0) | 2009.08.29 |
eclipse에 WAS(Tomcat) 추가하기. (0) | 2009.08.28 |
include 지시어와 include 액션 (0) | 2009.08.27 |
Session의 사용법 (0) | 2009.08.26 |
Cookie와 Session (0) | 2009.08.25 |
인터페이스와 상속을 사용하여 DAO 처리 하기. (0) | 2009.08.20 |
PreparedStatement 로 사용할 쿼리 쉽게 만드는 방법 (0) | 2009.08.19 |
WAS 셋팅 하기. (0) | 2009.08.15 |
JUnit 사용을 사용한 개발. (0) | 2009.08.13 |