[JSP] Cookie란?

@욕심쟁이

·

2020. 8. 14. 13:56

반응형

Cookie란?

- 값을 유지하고자할때 사용

- 클라이언트(사용자)측에서 관리되는 정보를 의미

- 세션은 서버측에서 쿠키는 클라이언트측에서 관리(세션과 쿠키의 차이점!!)

Session Cookie의 차이

Session  Cookie 
페이지 상관없이 값을 유지
연결정보저장 (연결유지정보저장) 사용자(클라이언트, 유저)에 저장
서버에 저장 보안상 상관없는 값을 유지
로그인 정보유지(로그인 인증) 서버에 부담을 줄이고자 할 때
보안상 중요한 데이터 -

쿠키를 설정하는 방법 2가지

1. HTTP 헤더를 이용한 쿠키설정

Set-Cookie : name=value; expires=date; domain-doamin; path=pathl secure

 

속성 설명
name (필수) 쿠키이름을 지정
value (필수) 쿠키값을 지정
expires (자주) 쿠키의 만료기간을 지정
(만료기간을 설정하지 않을 경우 쿠키는 파일로 저장안됨 브라우저종료시 정보삭제)
(만료기간을 설정한 경우 브라우저 종료시 쿠키파일 생성)
domain 저장된 쿠키를 서버에게 전송할떄의 도메인을 지정
path 쿠키가전송될 서버의 URL지정하고, 유효한 URL일경우 ㅋ키객체를 전송
secure 이속성을 추가하면 보안전인 채널(SSL 등)로 전송

 

2. 서블릿 API를 이용한 쿠키 설정

 

2-1. 쿠키객체의 생성자 및 메소드

 

 1) API 쿠키를 사용하기위해서는 쿠키객체를 생성

<%
// http들고온 정보를 서버request저장된 쿠키값 가져오기
//Cookie cookie = new Cookie(name,value);
Cookie[] cookie = new Cookie(name,value);// 보통 배열로 가져옴
%>


 2) 쿠키를 생성하였으면 생성한 쿠키를 클라이언트로 전송

response.addCookie(cookie)

 3) 위의 과정 처리후 메모리에 쿠키값이 저장

 

2-2. 자주 사용되는 메소드

속성 설명
setValue(String value) 쿠키값을 설정
setMaxAge(int seconds) 쿠키 만료기간을 지정
getValue 쿠키값을 얻어옴
getMaxAge() 쿠키만료기간을 얻어옴
getName() 쿠키이름을 얻어옴

 

예시 1)

 예시 1-1) cookieForm.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>WebContent/Study/jsp/cookieForm.jsp</title>
</head>
<body>
<h1>WebContent/Study/jsp/cookieForm.jsp</h1>

<%
//쿠키값 가져오기
Cookie[] cookies = request.getCookies();
if(cookies !=null){
	for(int i=0; i< cookies.length; i++){
		if(cookies[i].getName().equals("cook")){
			out.println("쿠키이름"+ cookies[i].getName()+"<br>");
			out.println("쿠키이름"+cookies[i].getValue()+"<br>") ;
		}
	}
}
%>

<input type="button" value="쿠키값하나설정" onclick="location.href='cookieSet.jsp'">
<input type="button" value="쿠키값하나삭제" onclick="location.href='cookieDel.jsp'">

</body>
</html>

 예시 1-2) cookieSet.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>WebContent/Study/jsp/cookieSet.jsp</title>
</head>
<body>
<h1>WebContent/Study/jsp/cookieSet.jsp</h1>

<%
//session.setAttrubute("이름",모든형 적용값); //세션에선
//쿠키값 생성
// 쿠키를 사용하기 위해서 객체생성(기억장소 할당)
// Cookie cookie = new Cookie("이름", "문자열값");
Cookie cookie = new Cookie("cook", "Cookie Value");

//쿠키값유지시간 설정 1800초 30분
cookie.setMaxAge(1800);
// cookie.setMaxAge(30*60);
//서버에서 만든 쿠키값을 클라이언트에 저장
response.addCookie(cookie);
%>

<script type="text/javascript">
	alert("쿠키값생성");
	location.href="cookieForm.jsp";
</script>
</body>
</html>

 예시 1-3) cookieDel.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>WebContent/Study/jsp/cookieDel.jsp</title>
</head>
<body>
<h1>WebContent/Study/jsp/cookieDel.jsp</h1>

<%
//클라이언트 http정보 가져와서 서버 request내장객체 저장
//쿠키값 request에서 가져오기
Cookie cookie[] = request.getCookies();
//쿠키값이 있으면  
//for if 쿠키값 찾기 "cook"
if(cookie !=null){
	
	for(int i=0; i < cookie.length; i++){
		if(cookie[i].getName().equals("cook")){
			cookie[i].setMaxAge(0); //찾은 쿠키  시간 0설정 
			response.addCookie(cookie[i]); //0으로 설정한 쿠키값을 response클라이언트에 저장
		}
	}
}
%>


<script type="text/javascript">
	alert("쿠키삭제");
	location.href="cookieForm.jsp";
</script>

</body>
</html>

 

예시2)

 예시 2-1) cookieExample1.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>WebContent/jsp/cookieExample1.jsp</title>
</head>
<body>
<h1>WebContent/jsp/cookieExample1.jsp</h1>
<%
//http들고온 정보를 서버request저장된 쿠키값 가져오기
Cookie cookies[]=request.getCookies();
// if 쿠키값이 있으면  for  if  쿠키이름 "clang" 찾기  쿠키값 출력  
String clang="korea";
if(cookies!=null){
	for(int i=0;i<cookies.length;i++){
		if(cookies[i].getName().equals("clang")){
			out.println("쿠키값 : "+cookies[i].getValue());
			clang=cookies[i].getValue();
		}
	}
}
// clang변수에 저장된 값 쿠키값  "korea" 와 같으면 "<h1>안녕하세요</h1>"
//                                  같지않으면 "<h1>Hello</h1>"
if(clang.equals("korea")){
	%><h1>안녕하세요</h1><%
}else{
	%><h1>Hello</h1><%
}
%>
<form action="cookieExample2.jsp" method="post">
<input type="radio" name="lang" value="korea" <%if(clang.equals("korea")){%>checked<%} %>>한국어 페이지보기
<input type="radio" name="lang" value="english" <%if(clang.equals("english")){%>checked<%} %>>영어 페이지보기
<input type="submit" value="언어설정">
</form>
</body>
</html>

 예시 2-2) cookieExample2.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>WebContent/jsp/cookieExample2.jsp</title>
</head>
<body>
<h1>WebContent/jsp/cookieExample2.jsp</h1>
<%
//서버 request 저장된 "lang"파=라미터 가져와서 변수에 저장
String lang=request.getParameter("lang");
out.println(lang);
//쿠키값 생성    쿠키이름 "clang" 쿠키값  파라미터에서 가져온값
Cookie cookie=new Cookie("clang",lang);
//시간설정, 클라이언트에 저장
cookie.setMaxAge(1800);
response.addCookie(cookie);

//"언어 쿠키값 설정"   cookieExample1.jsp 이동  
%>
<script type="text/javascript">
	alert("언어 쿠키값 설정");
    location.href="cookieExample1.jsp";
</script>
</body>
</html>
반응형