- [JSP]쿠키(Cookie)란? 목차
쿠키의 개요
- HTTP 프로토콜은 상태가 없다. 즉 이전에 무엇을 했고, 지금 무엇을 했는지에 대한 정보를 갖고 있지 않는 특성을 가지고 있다.
즉, 웹 브라우저(클라이언트)의 요청에 대한 응답을 하고 나면 해당 클라이언트와의 연결을 지속하지 않는다 (Connectionless)
- HTTP 프로토콜은 상태에 대한 지속적인 연결이 없다. 따라서 이런 부분을 해결하기 위해서 웹 서버 측에 웹 브라우저의 정보를 저장한 후 계속되는 웹브라우저의 요청 속에 포함되어 있는 웹 브라우저의 정보와 비교해서 동일한 웹 브라우저로부터 온 요청을 판단할 수 있다.
쿠키란 ?
- 쿠키(Cookie)는 상태가 없는 프로토콜을 위해 상태를 지속시키기 위한 방법이다.
- 기본적으로 쿠키는 그 쿠키를 생성한 서버에만 전송된다.
- 아이디 기억하기 기능을 구현할 때 쿠키를 사용한다. 또한 로그인 정보를 쿠키에 보관하면 자동 로그인 기능을 구현할 수도 있다.
-쿠키는 웹 브라우저의 정보를 웹 브라우저에 저장하므로, 이후에 서버로 전송되는 요청에는 쿠키가 가지고 있는 정보가 같이 포함돼 전송된다.
이때 웹 서버는 웹 브라우저의 요청 속에 포함되어 있을 쿠키를 읽어서 새로운 웹 브라우저인지 이전에 요청을 했던 웹 브라우저인지를 판단할 수 있다.
- 이러한 방법으로 웹 브라우저를 통해서 특정 사이트에 접속하면 웹 브라우저에 쿠키가 저장되어 접속한 사용자의 정보가 유지되는 것이다.
- 쿠키는 도메인을 이용해서 쿠키를 여러 도메인 주소에 공유할 수 있다.
- 쿠키는 웹 사이트에 접속할 때 생성되는 정보를 담은 임시 파일이다. 일반적으로 쿠키는 4KB 이하의 크기로 생성된다. 이러한 쿠키의 목적은 원래 사이트에 접속한 사용자의 정보를 유지하거나, 사이트에 접속하는 사용자들이 해당 사이트에 쉽게 접속하기 위한 것이다.
- 어떤 웹 사이트를 처음 방문해서 로그인해 사용하고 나면, 아이디와 패스워드를 기록한 쿠키가 만들어진다. 그 다음부터 해당 사이트에 접속하면 별도의 절차 없이 사이트에 빠르게 연결할 수 있게 된다. 쿠키는 이러한 목적으로 사용하기 위해 만들어진 것이다.
- 그러나 쿠키는 웹 브라우저가 방문했던 웹 사이트에 대한 정보 및 개인의 정보가 기록되기 때문에 개인의 사생활이나 정보를 침해할 소지가 있다는 문제점을 안고 있다. 이러한 보안상의 문제를 조금이나마 해소하기 위해서 웹 브라우저 자체에 쿠키 거부 기능이 추가되었다.
- 쿠키에 대한 거부가 웹 브라우저에 설정되어 있으면, 쿠키 본래의 목적인 웹 브라우저와의 연결을 지속시키는 기능을 수행할 수 없게 된다. 따라서 이것은 쿠키의 가장 치명적인 단점이 된다.
쿠키 문법
-JSP에서 쿠키를 사용하려면 javax.servlet.http 패키지에 있는 Cookie 클래스의 객체를 생성해야 한다.
이렇게 생성된 쿠키에는 각각의 웹 브라우저를 판별할 수 있는 정보가 포함되어 있다. 쿠키는 웹 서버가 웹 브라우저의 요청에 응답할 때 response 객체에 실려서 사용자의 웹 브라우저에 저장된다.
- 쿠키는 이름, 값, 유효기간, 도메인, 경로 등으로 이루어져 있다. 이들 중 가장 중요한 구성 요소는 쿠키의 이름과 값이다.
쿠키 생성하기
<%
Cookie info = new Cookie("쿠키이름", "쿠키값"); // 쿠키를 생성한다.
info.setMaxAge(365*24*60*60); // 쿠키의 유효기간을 365일로 설정한다.
info.setPath("/"); // 쿠키의 유효한 디렉토리를 "/" 로 설정한다.
response.addCooke(info); // 클라이언트 응답에 쿠키를 추가한다.
%>
쿠키에 저장된 정보 읽어오기
-쿠키를 생성하면 그 이후부터 해당 쿠키를 사용할 수 있다.
-request.getCookies()메서드는 Cookie배열을 리턴한다.
쿠키가 존재하지 않으면 null 리턴
<%
Cookie[] cookies = request.getCookies(); // 요청정보로부터 쿠키를 가져온다.
out.println("현재 설정된 쿠키의 개수 : " + cookies.length); // 쿠키가 저장된 배열의 길이를 가져온다.
for(int i = 0 ; i<cookies.length; i++){ // 쿠키 배열을 반복문으로 돌린다.
out.println(i + "번째 쿠키 이름 : " + cookies[i].getName()); // 쿠키의 이름을 가져온다.
out.println(i + "번째 쿠키에 설정된 값 : " + cookies[i].getValue()); // 쿠키의 값을 가져온다.
}
%>
설정된 쿠키를 모두 삭제하기
<%
Cookie[] cookies = request.getCookies(); // 요청정보로부터 쿠키를 가져온다.
for(int i = 0 ; i<cookies.length; i++){ // 쿠키 배열을 반복문으로 돌린다.
cookies[i].setMaxAge(0); // 특정 쿠키를 더 이상 사용하지 못하게 하기 위해서는
// 쿠키의 유효시간을 만료시킨다.
response.addCookie(cookies[i]); // 해당 쿠키를 응답에 추가(수정)한다.
}
%>
쿠키 관련 메소드
메소드 |
설명 |
String getCommnet() |
쿠키에 대한 설명을 가져온다. |
String getDomain() |
쿠키의 유효한 도메인 정보를 가져온다. |
int getMaxAge() |
쿠키의 사용할 수 있는 기간에 대한 정보를 가져온다. |
String getName() |
쿠키의 이름을 가져온다 |
String getPath() |
쿠키의 유효한 디렉토리 정보를 가져온다. |
boolean getSecure() |
쿠키의 보안이 어떻게 설정되어 있는지 가져온다. |
String getValue() |
쿠키에 설정된 값을 가져온다. |
int getVersion() |
쿠키의 버전을 가져온다. |
void setComment(String) |
쿠키에 대한 설명을 설정한다. |
void setDomain(String) |
쿠키에 유효한 도메인을 설정한다. |
void setMaxAge(int) |
쿠키의 유효한 기간을 설정한다. |
void setPath(Striong) |
쿠키의 유효한 디렉토리를 설정한다. |
void setSecure(boolean) |
쿠키의 보안을 설정한다. |
void setValue(String) |
쿠키의 값을 설정한다. |
void setVersion(int) |
쿠키의 버전을 설정한다. |
쿠키로 로그인 상태 유지하는 방법
1.로그인에 성공하면 특정 이름을 갖는 쿠키를 생성한다.
2.해당 쿠키가 존재하면 로그인한 상태라고 판단.
3.로그아웃하면 해당 쿠기를 삭제한다.
->ex) 로그인하면 AUTH라는 쿠키를 생성하고 "AUTH"쿠키가 존재하면 로그인한 상태라고 인식하는 방법
ex)response.addCookie ( Cookies.createCookie("AUTH",id,"/",-1 ) ) ;
단 이러한 방식은 평문으로 저장되기때문에 다양한 암호화 방식을 혼합하여 저장해야한다.
'Web(국비) > JSP' 카테고리의 다른 글
[JSP]표현 언어(Expression Language)란? (0) | 2019.11.06 |
---|---|
[JSP]-session이란?(세션과 쿠키의 차이점) (0) | 2019.11.04 |
[JSP]자바빈과 <jsp:useBean>액션 태그란? (0) | 2019.11.02 |
[JSP]기본(내장)객체의 속성(Attribute)- request.setAttribute (0) | 2019.11.02 |
[JSP]<jsp:forward> forward액션 태그 (0) | 2019.11.02 |