9장 쿠키와 세션 알아보기
1. 웹 페이지 연결 기능
- 세션 트랙킹
1)HTTP 프로토콜은 서버-클라이언트 통신 시 stateless 방식으로 통신
2)즉 브라우저에서 새 웹 페이지를 열면 기존의 웹 페이지나 서블릿에 관한 어떤 연결 정보도 알 수 없음
3)따라서 세션 트랙킹을 이용해서 웹 페이지 간의 연결 기능을 구현한
ex) 한 페이지에서 로그인하고 글쓰기를 눌렀을 때 로그인하라고 안내함(로그인에 대한 정보가 없어지게 됨)
- 세션 트랙킹 구현 방법 : <hidden> 태그와 URL rewriting / 쿠키와 세션
-<hidden> 태그와 URL rewriting의 문제점
1)웹 페이지가 많아지면 일일이 로그인 정보를 전송해야함
2)GET 방식으로 전송하므로 보안에 취약함
3. 쿠키를 이용한 웹 페이지 연동 기능
- 쿠키: 웹 페이지들 사이의 공유 정보를 클라이언트 PC에 저장해 놓고 사용하는 방법
-쿠키의 특징 :
1)정보가 클라이언트 PC에 저장됨 - 디스크에 저장됨
2)저장 정보 용량에 제한이 있음(파일 용량은 4kb)
3)보안이 취약함
4)클라이언트 브라우저에서 사용 유무를 설정할 수 있음
5)도메인당 쿠키가 만들어짐(웹 사이트당 하나의 쿠키)
-쿠키의 종류
- 쿠키 기능 실행 과정
1)브라우저로 사이트에 접속
2)서버는 정보를 저장한 쿠키 생성
3)생성된 쿠키를 브라우저로 전송
4)브라우저는 서버로부터 받은 쿠키 정보를 쿠키 폴더에 저장
5)브라우저가 다시 접속해 서버가 브라우저에게 쿠키 전송을 요청하면 브라우저는 쿠키 정보를 서버에 넘겨줌
6)서버는 쿠키 정보를 이용해 작업
-쿠키 API의 특징
1)javax.servlet.http.Cookie를 이용
2)HttpServletResponse의 addCookie() 메서드를 이용해 클라이언트 브라우저에 쿠키를 전송한 후 저장
3)HttpServletRequest의 getCookie() 메서드를 이용해 쿠키를 서버로 가져옴
-Cookie 클래스의 여러가지 메서드
- 세션쿠키는 Cookie의 setMaxAge() 메서드의 유효시간을 -1로 설정하면 된다.
4. 세션을 이용한 웹 페이지 연동 기능
- 세션 : 웹 페이지들 사이의 공유 정보를 서버의 메모리에 저장해 놓고 사용하는 방법
- 세션의 특징 :
1)서버에 부하를 줄 수 있음
2)브라우저(사용자)당 한 개의 세션(세션 id)이 생성됨
3)세션은 유효 시간을 가짐(기본 유효 시간은 30분)
4)로그인 상태 유지 기능이나 쇼핑몰의 장바구니 담기 기능 등에 주로 사용됨
5)쿠키보다 보안에 유리
-세션 기능 실행 과정
1)브라우저로 사이트에 접속
2)서버는 접속한 브라우저에 대한 세션 객체 생성
3)서버는 생성된 세션 id를 클라이언트 브라우저에 응답
4)브라우저는 서버로부터 받은 세선 id를 브라우저가 사용하는 메모리의 세션 쿠키에 저장(쿠키 이름은 jsessionId)
5)브라우저가 재 접속(종료안하고 해당 페이지에 재접속하는 경우)하면 브라우저는 세션 쿠키에 저장된 세션 id를 서버에 전달
6)서버는 전송된 세션 id를 이용해 해당 세션에 접근하여 작업을 수행
-세션 얻는 방법 : HttpSession 클래스 객체는 HttpServletRequest의 getSession()메서드를 호출해서 얻음
-getSession() 종류
1)getSession() : 기존의 세션 객체가 존재하면 반화하고, 없으면 새로 생성.
2)getSession(true) : 기존의 세션 객체가 존재하면 반화하고, 없으면 새로 생성.
3)getSession(false) : 기존의 세션 객체가 존재하면 반화하고, 없으면 null 반환.
- 세션에 정보를 바인딩할 수 있음