본문 바로가기

[JSP]

[JSP]10월 27일 쿠키(Cookie), 쿠키 만들기, 쿠키읽기, 쿠키삭제 예제

*쿠키(Cookie)

웹 어플리케이션이 사용자의 상태를 기억하기 위함.

→영속적으로 저장되어야 하는 것 : DB에 저장.

   중요하지 않고 일시적으로 저장되야하는 것 : 쿠키,세션.

 쿠키는 사용자가 저장, 세션은 서버가 저장.


쿠키의 구성요소

-이름 : 각각의 쿠키를 구별하는 데 사용되는 이름.

-값 : 쿠키의 이름과 관련된 값.

JSP에서 쿠키 생성 / 읽기

<%

Cookie cookie = new Cookie("cookieName", "cookieValue");

response.addCookie(cookie);

%>


클라이언트가 보낸 쿠키 읽기

Cookie[] cookies = request.getCookies();

사용자가 쿠키를 제출하면 request객체로 부터 읽어들임.


쿠키 값의 인코딩/디코딩 처리

-쿠키는 값으로 한글과 같은 문자를 가질 수 없음

쿠키의 값을 인코딩해서 지정할 필요 있음.



*예제

-쿠키를 만들어서 발급하는 makeCookie.jsp

-사용자가 제출하는 쿠키를 읽어서 출력하는 viewCookie.jsp

-쿠키를 제거하는 deleteCookie.jsp

원래 있던 k에 대해 유횻시간이 0인 쿠키를 새로 발급하는것.


*makeCookie.jsp


<body>


<%

Cookie cookie = new Cookie("name", URLEncoder.encode("홍길동"));

response.addCookie(cookie);

%>

쿠키가 생성되었습니다

<br>

생성된 쿠키의 이름 : <%= cookie.getName() %>

<br>

생성된 쿠키의 값 : <%= cookie.getValue() %>

</body>


*viewCookie.jsp


<body>

쿠키목록<br>

<%

request.setCharacterEncoding("UTF-8");

Cookie[] cookies = request.getCookies();

if(cookies != null && cookies.length > 0)

{

for(Cookie cookie : cookies)

{

out.println(cookie.getName() + " : ");

out.println(URLDecoder.decode(cookie.getValue(), "UTF-8") + "<br>");

}

}

else

out.println("쿠키없음");

%>

</body>


*deleteCookie.jsp


<body>


<%

request.setCharacterEncoding("UTF-8");

Cookie[] cookies = request.getCookies();

if(cookies != null && cookies.length > 0)

{

for(int i = 0; i < cookies.length; i++)

{

if(cookies[i].getName().equals("name"))

{

Cookie cookie = new Cookie("name", "");

cookie.setMaxAge(0);

response.addCookie(cookie);

}

}

}

%>

name쿠키 삭제

</body>