※ 쿠키와 세션은 서버와의 정보의 전달을 통해서 어떤 상태를 유지할 때 사용
※ 쿠키와 세션은 사용되는 형태가 비슷하다.
☆ 쿠키는 웹 브라우저(클라이언트) 쪽에 저장
☆ 세션은 웹 서버쪽에 저장
1. 쿠키
◆ 사용자의 시스템에 간단한 정보를 저장해 필요할 때마다 해당정보를 읽어오기 위하여 사용
◆ HTTP 프로토콜은 상태가 없는 즉, 이전에 무엇을 했고, 지금 무엇을 했는지에 대한 정보를 갖고 있지 않는 특성을 가짐
◆ 쿠키는 상태가 없는 프로토콜을 위해 상태를 지속시키기 위한 방법
➡상태를 유지하기 위한 방법
◆ 쿠키를 사용하는 가장 주된 이유 : 간단한 정보를 클라이언트에 저장함으로써 서버의 부하를 크게 줄일 수 있음
◆ 쿠키는 웹 브라우저(클라이언트)의 정보를 웹 브라우저(클라이언트)에 저장
➡C:\Documents and Settings\사용자이름\Cookies 폴더
◆ 쿠키는 특정 웹 사이트에 접속할 때 생성되는 정보를 담은 임시 파일
➡크기는 4KB 이하로 생성
◆ 쿠키는 사용자의 정보를 저장한다면 사용자의 아이디와 비밀번호와 같은 개인 신상정보들을 다 저장하는가? X. 단지 웹사이트 구분하는 일련번호만 저장
◆ 쿠키의 문제점
★ 쿠키는 웹 브라우저가 거쳐 간 웹 사이트 및 개인의 정보가 기록
➡개인의 사생활을 침해할 소지가 있음
★ 보안문제를 유발하기 때문에 웹 브라우저 자체에 쿠키 거부 기능이 있음
➡쿠키 거부 기능이 브라우저에 설정되어 있으면 쿠키 본래의 목적인 브라우저와의 연결을 지속시키는 기능을 수행할 수 없다. 이것이 쿠키의 가장 치명적인 단점
◆ 쿠키의 동작
★ 쿠키 생성 ➡ 쿠키 저장 ➡ 쿠키 전송
◆ 쿠키의 동작 방식
◆ Cookie의 작성절차
가. 먼저 Cookie 를 생성한다.
나. Cookie에 필요한 설정을 한다. 예를 들면, Cookie의 유효시간, Cookie에 대한 설명 등을 적용하고, 도메인, 패스, 보안등을 한다.
다. 웹 브라우저(클라이언트)에 생성된 Cookie 를 전송한다.
◆ 웹 브라우저(클라이언트)에 저장된 Cookie 를 사용 절차
가. 웹 브라우저(클라이언트)의 요청에서 Cookie 를 얻어온다.
나. Cookie 는 이름, 값의 쌍으로 된 배열형태로 리턴 된다. 리턴 된 쿠키의 배열에서 Cookie 이름을 가져온다.
다. Cookie 이름을 통해서 해당 Cookie 에 설정된 값을 추출한다
2. 쿠키의 생성
◆ 생성 및 사용시 : javax.servlet.http 패키지의 Cookie 클래스를 사용
◆ 쿠키는 이름, 값, 유효기간, 도메인, 경로등으로 이루어짐
◆ Cookie cookie = new Cookie(String name, String value);
★ 첫 번째 매개변수 name 은 생성되어지는 쿠키에 대한 이름
★ 두 번째 매개변수 value는 이 쿠키의 값
★ Cookiecookie=newCookie("Job",URLEncoder.encode("학생"));
◆ 쿠키를 생성한 후 response객체의 addCookie()를 사용해서 쿠키를 추가
★ response.addCookie(name);
◆ 쿠키 변경 및 삭제
★ 변경을 위해서는 변경하려는 쿠키의 이름에 해당하는 쿠키 값을 변경
★ 변경하려는 쿠키의 이름이 없을 경우 새롭게 쿠키 생성
3. 쿠키의 사용
◆ 클라이언트의 요청과 함께 전달되어져 온 쿠키를 읽어 올 때
◆ request객체의 getCookies()메소드를 사용
★ Cookie[] cookies = request.getCookies();
◆ 쿠키 도메인 및 경로
★ setDomain () 메소드 : 사용하는 서버에 쿠키를 보내려고 할 때 사용
➡cookie.setDomain(String url);
➡ cookie.setDomain("www.shop.net");
★ getDomain () 메소드 : 설정한 쿠키 도메인을 리턴하려고 할 때 사용
★ setPath () 메소드 : 경로 지정
➡ cookie.setPath(String url)
➡ cookie.setPath("/");
◆ 쿠키의 수명(지속시간)은 cookie객체의 setMaxAge()메소드를 사용
★ cookie.setMaxAge(int expiry);
★ cookie.setMaxAge(60*60);(예:60*60(1시간))
4. 쿠키에서 제공하는 메소드
가. java.lang.String getComment() : 쿠키에 설정된 코멘트 리턴
나. java.lang.String getDomain() : 쿠키 도메인 리턴
다. int getMaxAge() : 쿠키 유효시간 리턴
라. java.lang.String getName() : 쿠키 이름 리턴
마. java.lang.String getPath() : 쿠키 전송 경로 리턴
바. boolean getSecure() : 쿠키에 지정된 논리값 리턴
사. java.lang.String getValue() : 쿠키값 리턴
아. int getVersion() : 쿠키버전 리턴
자. void setComment(java.lang.String purpose) : 쿠키의 사용목적을 설명하는 코멘트 설정
차. void setDomain(java.lang.String pattern) : 도메인 설정
카. void setMaxAge(int expiry) : 쿠키의 유효 시간 설정
타. void setPath(java.lang.String uri) : 쿠키를 전송할 경로 설정
파. void setSecure(boolean flag) : true일때 암호화된 네트워크 커넥션을 통해 쿠키를 전송하도록 설정
하. void setValue(java.lang.String newValue) : 쿠키의 값 설정
거. void setVersion(int v) : 쿠키 버전 설정
'JAVA' 카테고리의 다른 글
정규식 regular expression (0) | 2012.07.29 |
---|---|
한글문제 (0) | 2012.07.29 |
JavaScript 키코드 (0) | 2012.07.29 |
JDK 설치 (0) | 2012.07.29 |
JSP 이미지 파일 다운로드 소스 (0) | 2012.07.29 |