본문 바로가기
IT/JSP

[JSP] - 27. Cookie(쿠키) [생성, 추가, 삭제] 하는 방법

by 차이나는 개발자 2020. 7. 27.
728x90
반응형

#Cookie(쿠키) [생성, 추가, 삭제] 하는 방법

 

 

#쿠키

-웹 브라우저가 보관하는 데이터이다.

-웹 브라우저에서 서버로 어떤 데이터를 요청하고 서버로부터 응답을 받고 나면 관계가 종료된다.

종료된 상태에서 어떤 정보를 지속적으로 유지하기 위해서 쿠키라는 방식을 사용한다.

-쿠키는 클라이언트가 접속을 하면 서버 쪽에서 생성하여 해당 클라이언트에게 보내어 로컬 PC에 저장을 하는 방식이다.

-저장할 수 있는 데이터가 제한적이다.

-e.g.) 로그인시 아이디 값만 쿠키에 저장(비밀번호는 보안이 중요하므로 세션에서 관리)

-점점 사라지는 추세(클라이언트->서버에서 처리)

 

 

#도메인이나 path를 생략하면 그 쿠키를 생성한 JSP,경로,도메인을 기본값으로 가진다.


#쿠키는 응답헤더를 통해서 넘어간다(flush후에 쿠키를 추가하면 안된다.)

 

 

#쿠키 관련 메서드

메서드  리턴 타입  설명
getName() String 쿠키 이름을 구한다.
getValue() String 쿠키 값을 구한다.
setValue(String value) void 쿠키 값을 지정한다.
setDomain(String pattern) void 이 쿠키가 전송될 서버의 도메인을 지정한다.
getDomain() String 쿠키의 도메인을 구한다.
setPath(String uri) void 쿠키를 전송할 경로를 지정한다.
getPath() String 쿠키의 전송 경로를 구한다.
setMaxAge(int expiry) void 쿠키의 요효시간을 초 단위로 지정한다. 음수를 입력할 경우 웹 브라우저를 닫을 떄 쿠키가 함께 삭제된다.
getMaxAge() int 쿠키의 유효시간을 구한다.

 

 

예제1)

1. 쿠키 설정

 

 

2 .쿠키 확인(브라우저에서 F12 -> Application)

-쿠키가 저장되어 있는 것을 볼 수 있다.

 

 

3. 쿠키 삭제

-Name과 Value가 삭제되었다.

-브라우저 창의 정보는 F5(새로고침을 하면 갱신된다.)

 

 

4. 쿠키 재확인

-완전히 삭제되었다.

 

 

#소스코드

1.cookieSet.jsp

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
	<h1>쿠키 설정 페이지</h1>
	<%
		request.setCharacterEncoding("utf-8");
		// 쿠키 지정 name, value
		Cookie cookie = new Cookie("abc", "123");
		// 쿠키의 유효시간 설정
		cookie.setMaxAge(60*60);
		// 쿠키 추가
		response.addCookie(cookie);
	%>
	<br><br>
	<a href="cookieGet.jsp">쿠키값 확인창으로 이동</a>
</body>
</html>

 

 

2.cookieGet.jsp

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
	<h1>쿠키 확인 페이지</h1>
	<%
		request.setCharacterEncoding("utf-8");
		// 쿠키 정보를 얻기
		Cookie[] cookies = request.getCookies();
		// 쿠키에 값이 있다면
		for(int i = 0; i<cookies.length; i++){
			String name = cookies[i].getName(); // 쿠키 이름
			String value = cookies[i].getValue(); // 쿠키 값
			if(name.equals("abc")){
				out.println("cokies[" + i + "] name : " + name);
				out.println("<br/>");
				out.println("cokies[" + i + "] value : " + value);
			}
		}
	%>
	<br><br>
	<a href="cookieDel.jsp">쿠키값 삭제 페이지로 이동</a>
</body>
</html>

 

 

3.cookie.Del.jsp

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
	<h1>쿠키 삭제 페이지</h1>
	<%
		request.setCharacterEncoding("utf-8");
	
		Cookie[] cookies = request.getCookies();
		
		for(int i = 0; i<cookies.length; i++){
			String name = cookies[i].getName();
			String value = cookies[i].getValue();
			if(name.equals("abc")){
				out.println("cokies[" + i + "] name : " + name);
				out.println("<br/>");
				out.println("cokies[" + i + "] value : " + value);
				// 유효시간을 0초 설정 삭제하는 효과
				cookies[i].setMaxAge(0);
				response.addCookie(cookies[i]);
				out.println("cokies[" + i + "] name : " + name);
				out.println("<br/>");
				out.println("cokies[" + i + "] value : " + value);
			}
		}
	%>
	<br><br>
	<a href="cookieCheck.jsp">쿠키값 확인 페이지로 이동</a>
</body>
</html>

 

 

4.cookieCheck.jsp

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
<h1>쿠키 재확인 페이지</h1>
	<%
		Cookie[] cookies = request.getCookies();
		if(cookies != null){
			for(int i=0; i<cookies.length; i++){
				out.println(cookies[i].getName());
				out.println(cookies[i].getValue());
			}
		}
	%>
</body>
</html>

 

 

 

728x90
반응형

댓글