본문 바로가기

JSP,Servlet

JSP - Cookie객체 생성/가져오기/ 삭제 / 개념

-Cookie 용량제한은 한 도메인당 20개 쿠키 하나당 4KB

 

-Session의 용량제한은 서버가 허용하는 한 용량제한 없음

 


쿠키 생성하기

 

<%@page import="java.net.URLEncoder"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<h1>쿠키 생성</h1>
	<%
	
	Cookie cookie1 = new Cookie("first_cookie","첫번째쿠키생성");
	Cookie cookie2 = new Cookie("second_cookie", URLEncoder.encode("두번째 쿠키생성","UTF-8"));
	Cookie cookie3 = new Cookie("third_cookie","세번째+쿠키생성");

	response.addCookie(cookie1);
	response.addCookie(cookie2);
	response.addCookie(cookie3);

	%>
	<a href="ex01selectCookie.jsp">쿠키 확인</a>

</body>
</html>

쿠키 생성하기 코드

new Cookie("쿠키 이름", "쿠키값(데이터)");

 

인코딩을 해줘야한다 

URLEncoder.encode("문자열"),;

 

응답 쿠키 추가

add.Cookie(cookie객체);


쿠키 가져오기

<%@page import="java.net.URLDecoder"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<h1>쿠기 조회</h1>
	<%
		
		Cookie[] cookies = request.getCookies();
		
		for(Cookie c:cookies){
		
			if(c.getName().contains("cookie")){
				
				String value = URLDecoder.decode(c.getValue(),"UTF-8");
				
				String name = c.getName();
				
				out.print(name+":"+value+"<br>");
				
			}
			
		}
	%>
	<a href = "ex01deleteCookie">쿠키 삭제 </a>
	
</body>
</html>

 

쿠키 가져오기

Cookie[] cookies = request.getCookies();

 

request.getCookies() 이용해서 가져올수 있다 / 단 전부 가져오기만 가능!

 

for(꺼내담을 변수명 : 배열){

}

 

String.contains("문자열")--->매개변수로 준 문자열을 포함하고 있는지 없는지

 

cookie값 가져오기 -->c.getvalue         값을 가져와라 ??---> .get 생각해라 항상!!

인코딩 풀어줘야한다 -----> 디코딩

URLDecoder.decode("인코딩된 문자열", "인코딩방식");

 

cookie 이름 가져오기

c.getname();

 


쿠키 삭제하기

package Controller;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


@WebServlet("/ex01deleteCookie")
public class ex01deleteCookie extends HttpServlet {
	private static final long serialVersionUID = 1L;


	protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		Cookie cookie4 = new Cookie("fourth_cookie", "네번째쿠키");
		Cookie cookie2 = new Cookie("second_cookie", "");
		
		cookie2.setMaxAge(0);

		cookie4.setMaxAge(60*60*24*365);

		response.addCookie(cookie4);
		response.addCookie(cookie2);
		response.sendRedirect("ex01selectCookie.jsp");
		
		
	}

}

쿠키 삭제하기 

cookie.setMaxAge(초단위 정수형)

 

.setMaxAge(0); ----> 즉시 지움

 

매개변수 : 유효기간( 초단위 )


실습 실행