[JSP] 쿠키(Cookie)
● 쿠키(Cookie) ●
- 웹사이트에 접속할 때 생성되는 정보를 담은 임시 파일
- 일반적으로 4KB 이하의 크기
- HTTP 프로토콜은 상태가 없으므로 상태를 지속 시키기 위한 방법이다.
사용목적 : 사이트에 처음 방문해서 로그인을 하고나면 아이디와 패스워드를 기록한 퀴가 만들어짐. 그 다음 해당 사이트에 접속하면 별도의 절차 없이 사이트에 빠르게 연결할 수 있다. 이런 목적을 위해 만들어짐
단 점 : 보안상의 문제를 해소하기 위해 웹 브라우저 자체에 쿠키 거부 기능 추가 됨. 연결을 지속 시키는 기능을 수행할 수 없게 되므로 가장 치명적인 단점이 된다.
쿠키사용
- javax.servlet.http 패키지에 있는 Cookie 클래스의 객체를 생성해야한다.
- 웹 서버가 웹브라우저의 요청에 응답할 때 response 객체에 실려서 사용자의 웹 브라우저에 저장된다. 웹 브라우저에 저장된 쿠키는 사용자가 다시 웹 서버에 요청을 할 때 request 객체에 실려서 다시 웹서버에 전달됨.
● 쿠키 생성 및 사용 ●
이름, 값, 유효기간, 도메인, 경로 등으로 이뤄져 있다.
<%
//쿠키 생성. 이름 : testCookie, 값 : Hello Cookie
Cookie info = new Cookie("testCookie", "Hello Cookie");
info.setMaxAge(365*24*60*60); //쿠키의 유효기간을 365일로 설정
info.setPath("/"); //쿠키의 유효한 디렉토리를 "/"로 설정
response.addCookie(info); //클라이언트 응답에 쿠키를 추가
%>
● 쿠키 정보 읽어오기 ●
<% //요청정보로부터 쿠키를 가져온다.
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);
// 특정 쿠키를 더 이상 사용하지 못하게 하기 위해서는
//쿠키의 유효시간을 만료시킨다. + 쿠키 유효시간을 0 으로 변경
cookies[i].setPath("/");
//쿠키의 생성때와 똑같이 지정해 주지 않으면 삭제가 되질 않는다고 한다(!)
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) | 쿠키의 버전을 설정한다. |
● 세션(session) ● 개념만 알아두기 ...
- 쿠키가 웹 브라우저에 사용자 상태를 유지하기 위한 정보를 저장했다면, 세션은 웹 서버 쪽의 웹 컨테이너에 상태를 유지하기 위한 정보를 저장함. 세션은 사용자의 정보를 유지하기 위해 javax.servlet.http 패키지의 HttpSession 인터페이스를 구현해서 사용한다.
- 사용자의 정보를 유지하기 위해서는 쿠키를 사용하는 것보다 세션을 사용한 웹 브라우저와 웹 서버의 상태 유지가 훨씬 안정적이고, 보안상의 문제도 해결할 수 있다. 세션은 웹 브라우저 당 1개씩 생성되어 웹 컨테이너에 저장 됨
(수업에서 사용하지 못 하는 이유는 고정 아이피가 아니라서 ... )
- 웹 서버는 각각의 웹 브라우저로부터 발생한 요청에 대해서 특별한 식별자를 부여함. 이 식별자를 웹 브라우저에서 발생한 요청들과 비교해서 같은 식별인지 구별하게 됨. 이 특별한 식별자에 특정한 값을 넣을 수 있으며 이것을 사용해서 세션을 유지하게 됨
쉽게 생각해서 . . .
쿠키는 클라이언트 브라우저에 넣는 정보
세션은 웹서버에 남는 정보이다~~~