Jsp Cookie ( 쿠키생성, 쿠키변경, 쿠키삭제 , 쿠키인코딩 )

2017. 4. 8. 16:06JSP


쿠키(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