2017. 4. 8. 16:06ㆍJSP
쿠키(Cookie)
1.개념
- 웹 브라우저가 보관하고 있는 데이터로, 웹 서버에요청을 보낼때 쿠키를 헤더에 담아 전송한다.
- 웹 브라우저는 쿠키가 삭제되기 전까지 웹 서버에 쿠키를 전송한다.
2.동작방식
- 쿠키 생성 : 웹 서버에서 쿠키를 생성하고 쿠키에 응답데이터를 담아서 웹 브라우저에 전송한다.
- 쿠키 저장 : 웹 브라우저는 응답 데이터를 담고있는 쿠키를 메모리나 파일로 저장한다.
- 쿠키 전송 : 웹 브라우저는 쿠키를 요청이 있을 때마다 웹서버에 전송한다.
웹 서버는 쿠키를 사용해서 필요한 작업을 수행 할 수 있다.
3.생성방식
1) 쿠키를 생성하고 response객체에 담는다.
Cookie cookie = new Cookie( "cookieName" , "cookieValue" );
response.addCookie( cookie );
2) 페이지가 이동되면 쿠키는 헤더에 포함되어 다른 페이지에 전송된다.
Cookie[] cookies = request.getCookies(); // 쿠키배열을 반환하고 쿠키가 없으면 null을반환한다
3) 받은 쿠키배열을 이용하면 된다.
예제1
[ aPage.jsp ]
<%
Cookie cookie = new Cookie("NAME","value");
response.addCookie(cookie);
%>
....
<body>
<a href="bPage.jsp">이동</a>
</body>
[ bPage.jsp ]
<%
String name = "";
String value = "";
String cook = request.getHeader("Cookie");
if ( cook != null ){
Cookie[] cookies = request.getCookies();
for( int i = 0 ; i< cookies.length ; i++){
if( cookies[i].getName().equals("NAME") ){
name = cookies[i].getName();
value = cookies[i].getValue();
}
}
}
%>
....
<body>
쿠키 명 : <%=name%>
쿠키 값 : <%=value%>
</body>
예제2 ( 인코딩해서 쿠키값 넘기기 )
[ aPage.jsp ]
쿠키값에 아스키코드 나 숫자를 제외한 다른 값이 올경우에는 인코딩하여서 쿠키값을 넘겨준 후
디코딩해서 쿠키값을 출력해야한다.
<%
String str = URLEncoder.encode( "홍길동" , "UTF-8" ); // '홍길동'을 'UTF-8'로 인코딩
Cookie cookie = new Cookie("NAME" , str );
response.addCookie( cookie );
%>
....
<body>
<a href="bPage.jsp">이동</a>
</body>
[ b.page.jsp ]
<%
String name = "";
String value = "";
String cook = request.getHeader("Cookie"); // 헤더에 쿠키가 존재하는지 확인( 쿠키는 헤더에 저장된다 )
if ( cook != null ){
Cookie[] cookies = request.getCookies();
for ( Cookie c : cookies ){
if ( c.getName().equals("NAME") ){ // 쿠키안에 데이터중에 쿠키이름이 NAME 인 쿠키 검색
name = c.getName();
value = c.getValue();
}
}
}
%>
...
<body>
쿠키 명 :<%=name%>
인코딩된 쿠키 값 : <%=value%>
디코딩된 쿠키 값 : <%=URLDecoder.decode( value , "UTF-8" )%>
</body>
예제3 ( 쿠키값 수정하기 )
[ modifyPage.jsp ]
<%
String cook = request.getHeader("Cookie");
if ( cook != null ){
Cookie[] cookies = request.getCookies();
for ( int i = 0 ; i < cookies.length ; i++){
if ( cookies[i].getName.equals( "NAME" ) ){ // 쿠키이름이 NAME인 쿠키 검색
Cookie cookie = new Cookie( "NAME" , "변경할값" ); // 존재한다면 해당이름으로 새로운 쿠키를 만든다
response.addCookie( cookie ); // 새로운 쿠키를 헤더에 추가한다
}
}
}
%>
....
<body>
<a href="viewPage.jsp">수정되어있는지확인하러가기</a>
</body>
예제4 ( 쿠키값 삭제하기 )
[ deletePage.jsp ]
<%
String cook = request.getHeader( "Cookie" );
if ( cook != null ){
Cookie[] cookies = request.getCookies();
for ( int i = 0 ; i < cookies.length ; i++){
if ( cookies[i].getName().equals("NAME") ){
Cookie cookie = new Cookie( "NAME" , "아무값" );
cookie.setMaxAge( 0 ); // 쿠키 유효 시간을 0으로 한 후
response.addCookie( cookie ); // 헤더에 쿠키 추가
}
}
}
%>
....
<body>
<a href="viewPage.jsp">삭제되어있는지확인하러가기</a>
</body>
[ viewPage.jsp ]
...
<body>
<%
String cook = request.getHeader("Cookie");
String name = "";
String value = "";
if ( cook != null ){
Cookie[] cookies = request.getCookies();
for ( int i = 0 ; i < cookies.length ; i++){
name = cookies.getName();
value = cookies.getValue();
out.println( name + " : " + value + "<br/>");
}
}
%>
</body>
</html>
참고사이트 : http://gangzzang.tistory.com/
'JSP' 카테고리의 다른 글
JSP 파일업로드 (0) | 2017.04.21 |
---|---|
jstl ( Jsp Standard Tag Library ) (0) | 2017.04.21 |
JSP EL (0) | 2017.04.20 |
JSP액션태그 useBean (0) | 2017.04.15 |
JSP Session ( Enumeration 이용 ) (0) | 2017.04.14 |