2013년 3월 16일 토요일

[JSP] 쿠키와 세션

http은 웹 상에서 html화면을 브라우저로 보여주는 기능에 최적화 되어 있는 프로토콜이다. 이 프로토콜 덕분에 브라우저를 이용하여 인터넷을 사용하는데 전혀 무리가 없는 것이다.

그런데 이 프로토콜에 한가지 맹점이 있다. 그것은 웹 서버에서 사용자를 식별하거나 접속을 유지하고 있다는 사실을 인지하지 못하는 것이다.

이러한 문제점을 해결하기 위해 쿠키와 세션을 사용한다. 쿠키를 활용하면 클라이언트가 웹 서버에 요청할 때 쿠키를 함께 전달하여 서버가 사용자의 정보를 읽어올 수 있으며 서버에 세션을 활용하여 사용자의 접속상태를 확인해 줄 수 있다.

우선 쿠키에 대해 알아보자.

쿠키
- 웹 브라우저가 보관하고 있는 데이터로서, 웹 브라우저가 웹 서버에 요청을 보낼 때 쿠키를 함께 전송한다.

쿠키의 구성
이름 - 쿠쿠를 구별하는데 사용되는 이름
값 - 쿠키의 이름으로 얻을 수 있는 데이터
유효 시간 - 쿠키의 유지 시간
도메인  - 쿠키를 전송할 도메인
경로 - 쿠키를 전송할 요청 경로

쿠키 생성 후 전달
Cookie cookie = new Cookie("cookieName", "cookieValue");
response.addCookie(cookie);

쿠키 값 읽어오기
Cookie[] cookies = request.getCookie();
request 객체를 통하여 쿠키배열을 얻을 수 있다. 전송된 쿠키를 활용하기 전 항상 null인지 확인하도록 하자.

쿠키 값 변경
Cookie cookie = new Cookie("기존의 이름", "새로운 값");

쿠키 삭제 및 유효시간 설정
cookie.setMaxAge(0);//삭제
cookie.setMaxAge(60*60);//1시간 설정

도메인 설정
cookie.setDomain(".somehost.com"); www.somehost.com이나 mail.somehost.com과 같은 모든 호스트로 쿠키 전송

경로 설정
cookie.setPath("원하는 경로");


세션
- 세션은 웹 브라우저에 정보를 웹 컨테이너에 보관할 때 사용된다. 즉, 서버에서만 생성된다. 세션은 웹 브라우저마다 따로 존재하기 때문에 웹 브라우저와 관련된 1 대 1 정보를 저장하기에 알맞은 장소다. 또한 쿠키보다는 세션을 더 많이 사용하는데 가장 큰 이유는 보안 때문이다. 쿠키의 경우 웹 브라우저로부터 데이터를 전달시 중간에서 누군가에 의해 쿠키의 값을 읽을 수 있다. 하지만 세션은 서버에 데이터를 저장하기 때문에 그러한 문제점이 없다.

JSP에서는 session이 보통 내장 객체로 제공되기 때문에 쉽게 사용할 수 있다.

session 메서드
getId() : 세션의 고유 ID를 얻음
getCreationTime() : 세션이 생성된 시간을 구함
getLastAccessedTime() : 웹 브라우저가 가장 마지막에 세션을 접근한 시간
session.setAttribute("이름", "값");//세션에 이름으로 값을 저장
session.getAttribute("이름");//세션에서 이름이르 값을 얻음
session.invalidate();//세션 종료
session.setMaxInactiveInterval(60*60);//세션의 유효 시간을 1시간으로 설정(default로 30분)

댓글 없음:

댓글 쓰기