-
세션(session)과 쿠키(cookie)웹프로그래밍/기초 2018. 6. 9. 17:58세션(session)?
웹 서버측에서 사용자 정보를 저장하기 위해 사용하는 객체.
클라이언트의 정보를 저장할 수 있다. 쿠키와 차이점이 있다면, 세션은 웹 브라우저가 아니라 서버에 값이 저장된다는 점이다.
세션 ID
컨테이너는 웹 브라우저마다 세션을 생성한다. 그리고 수 많은 웹브라우저의 세션을 구분하기 위해서
웹 브라우저의 최초 요청 시 컨테이너는 유일한 세션 ID를 부여하고 응답으로 보낸다.
이후 웹 브라우저의 요청시 세션 ID를 함께 보내서 해당하는 세션을 연결한다.
기본적으로 세션 ID는 쿠키에 저장된다. 만약 웹 브라우저가 쿠키를 사용하지 않도록 설정 했다면 세션ID를 저장할 수 없다.
URL-재작성
쿠키를 사용할 수 없을 경우, 요청 URL마다 세션ID를 파라미터로 추가해주는 방법으로 JSP 같은 동적인 페이지에서만 가능하다.
자세한 내용은 아래 링크를 참고..
세션 사용법
HttpSession session = request.getSession();
위에 코드 한 줄이면 컨테이너가 알아서 처리한다.
컨테이너는 세션ID 생성하고 생성한 쿠키 객체에 저장한다. 그리고 응답 객체에 쿠키를 설정한다.
이 후 요청시 컨테이너가 쿠키의 세션 ID로 세션을 연결한다.
만약 일치하는 세션이 없을 경우 새로운 세션을 만든다.
세션이 종료 되는 경우 3가지
1. 설정한 세션 유지 시간이 다 되었을때
2. 세션 객체에 invalidate() 메서드를 실행 했을때
3. 어플리케이션이 종료되는 경우
참고:
쿠키
주로 세션관리, 유저 트래킹, 유저 정보를 저장하는 용도로 사용 된다.
기본적으로 세션과 생존 기간이 같다. 웹 브라우저 닫히면 쿠키도 사라진다.
하지만 setMaxAge() 메서드로 기한을 설정하면 쿠키를 계속 유지할 수 있다.
쿠키 형태
-서버 측에서 쿠키를 보낸다.
Set-Cookie: username=john
-사용자가 요청시 쿠키를 보낸다.
Cookie: username=john
쿠키는 '키'='값' 형태이며 HTTP 요청/응답 해더에 위치한다.
쿠키 객체를 호출한 뒤 username으로 요청에 대한 쿠키 값(john)에 접근 할 수 있다.
참고:
>쿠키
'웹프로그래밍 > 기초' 카테고리의 다른 글
HTTP 요청과 응답 그리고 서블릿 정리 (0) 2018.12.02 프록시란? (0) 2018.07.12 웹 요청 처리에 대한 기본지식 (0) 2018.06.10 페이징 (0) 2018.04.28 웹프로그래밍과 데이터베이스 관련내용 정리 (0) 2018.04.14