쿠키와 세션
1.쿠키
쿠키는 이름과 값의 쌍으로 구성된 작은 정보다. 아스키 문자로만 가능하고 서버에서 생성 후 전송된다. 저장은 브라우저에 가능하고 유효기간이 지난 후에는 자동으로 삭제된다. 서버에 요청할 때 domain, path가 일치하는 경우에만 자동전송된다.
쿠키 작동과정
쿠키는 브라우저에서 요청하면 서버에서 만든다. 서버에서 만들어진 쿠키는 (1) 브라우저로 전송되며 저장된다. 한번 생성, 저장된 쿠키는 브라우저에 저장되어 따로 (2) 생성할 필요 없이 유효기간이 지나거나 삭제할 때 까지 사용가능하다.
1.1 쿠키의 생성, 삭제와 변경, 읽어오기
1.1.1 쿠키의 생성
1.1.2 쿠키삭제와 변경
1.1.3 쿠키 읽어오기
2.세션(Session)
“a collection of realated HTTP transactions(요청과 응답) made by one browser to one server.”
세션은 쿠키를 이용해 서로 관련된 요청들을 하나로 묶은 것이다. browser마다 개별 저장소(session 객체)를 서버에서 제공한다. 간단한 예로 로그인~로그아웃을 이야기 할 수 있다.
서버가 세션객체(session #2F460A)에 저장된 세션ID를 응답헤더에 Set-cookie로 세션을 준다. 응답 헤더를 받은 브라우저는 쿠키에 세션을 저장하고 이후에 요청할 때 마다 요청헤더에는 세션이 저장되어 서버에 요청이 간다. 서버는 세션ID를 통해 같은 브라우저인지 아닌지 판별 한다.
2.1 세션 객체얻기
Controller에서 세션 저장소를 사용하고 싶으면 request.getSession을 사용한다.
request.getSession()을 호출하면 요청 헤더의 세션ID와 일치하는 세션 저장소를 찾고 일치하는 저장소를 찾으면 session.setAttribute(“id”, “asdf”)값을 세션저장소에 저장한다. session을 가져올 때는 ‘request’를 쓰는 걸 주목해보자. request를 쓰는 이유는 요청(request)에서 세션ID를 불러오기 때문이다.
2.2 세션과 관련된 메서드
2.3 세션의 종료
2.3.1 세션의 True와 False
세션은 서버에 저장하기 때문에 부담이 많이가는 작업이다. 꼭 필요한 경우가 아니라면 session을 쓰지 않는게 메모리 관리에 좋다. 위의 그림은 로그인에 관한 세션의 적용 흐름이다. 모든 곳에 세션이 적용되어있다. 그런데 로그인 하기 전 앞 두 단계에서는 굳이 세션을 생성하지 않아도 된다. 그리고 로그인 할 때 세션을 생성하고 난 이후에도 마찬가지로 이미 세션이 생성되어있기에 다른 세션을 추가해줄 필요가 없다.
세션을 쓰지 않아도 되는 구간이 존재하기 떄문에 세션을 생성하지 않는 session=”false”를 쓸 수 있다. session=”false”는 세션이 필요없는 JSP화면에 사용하고 session=”false”를 사용하면 기존 세션에 영향을 끼치지 않는다. 즉 세션이 생성된 뒤에 session=”false”를 선언해도 이전에 생성된 세션에 영향을 끼치지 않는다. 기본값으로 session=”true” 값을 갖기 때문에 세션이 필요없는 화면에서는 session=”false”를 써주도록 하자.
3.쿠키와 세션 비교
출처:스프링의 정석 : 남궁성과 끝까지 간다(패스트 캠퍼스 강좌)
Comments