[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>
반응형
'IT > JSP' 카테고리의 다른 글
[JSP]게시판 만들기(글목록/글쓰기/글수정/글삭제) (0) | 2020.09.10 |
---|---|
[JSP] 회원가입 (로그인/로그아웃/정보조회/정보수정/정보삭제/모든정보목록) (0) | 2020.08.25 |
[JSP] Session이란? (0) | 2020.08.14 |
[JSP] Include태그 (0) | 2020.08.13 |
[JSP] 링크이동 (0) | 2020.08.13 |