민스씨의 일취일장

LogT | Java Spring의 쿠키와 세션에 대해 알게 된 모든 내용과 고민들 본문

Programming Language & Framework/JAVA & Spring

LogT | Java Spring의 쿠키와 세션에 대해 알게 된 모든 내용과 고민들

읻민스 2023. 1. 11. 23:35
반응형

Java Spring의 쿠키와 세션에 대한 공부를 하면서 알게 된 내용을 시간 순으로 기록하고 있다. 쿠키와 세션은 Java Spring에서만 사용되는 개념은 아니기 때문에 몇몇 특정 Spring 코드 외에는 범용적으로 이해할 수 있는 내용일 것이라고 생각한다.

쿠키와 세션


2023년 1월 11일

쿠키란?

쿠키는 브라우저에서 생성하는 데이터 모음이다. 데이터는 배열과 같이 키(key)와 값(value) 한 쌍으로 저장되고 여러 쌍이 저장될 수 있다.

특징

  • 아스키문자만 담을 수 있다. 따라서 한글과 같은 문자는 Encode 해줘야 한다.
  • 서버에 요청을 보낼 때 Request Header에 cookie 라는 항목으로 전달된다.

쿠키 다루기

생성

Cookie cookie = new Cookie("key", "value");
response.addCookie(cookie);

삭제

Cookie cookie = new Cookie("key", "");
cookie.setMaxAge(0);
response.addCookie(cookie);

수정

cookie.setDomain("new.domain");
cookie.setPath("/new/Path");

읽기

Cookie[] cookies = request.getCookies();

for(Cookie cookie : cookies){
	String name = cookie.getName();
    String value = cookie.getValue();
    ...
}

HTML에서 쿠키값 사용하기

${cookie.id.value}

세션이란?

서버에서 브라우저별로 생성하고 서버에 저장하는 데이터 모음이다. 브라우저, 즉 사용자를 식별하는데 주로 사용된다.

세션과 쿠키의 상호작용

브라우저가 어떤 요청을 하면 서버는 session 객체를 생성한다. session 객체가 생성되면 session-id가 할당되고 response 객체에 set-cookie 항목으로 sesssion-id가 전달된다.

response 객체
set-cookie : JSESSIONID=생성된세션아이디

response 객체를 받은 브라우저는 set-cookie를 이용해 쿠키를 생성하고 쿠키 안에 session-id를 저장한다. 그 다음 해당 웹사이트의 요청을 보낼때는 request 객체에 cookie 정보를 보낸다.

request 객체
cookie : JSESSIONID=전달받은세션아이디

세션 다루기

읽기

HttpSession session = request.getSession();
// 위 명령을 통해 서버에 저장되어 있는 수 많은 세선 중
// 쿠키에 저장되어 있는 세션ID와 일치하는 세션을 불러온다.

종료

// 즉시 종료 하기
session.invalidate();

// 예약 종료 하기
session.setMaxInactivateInterval(time);
// time은 초를 단위로 작성하면 된다.

따로 종료를 하지 않을 때 일정 시간이후 자동으로 종료되도록 xml에 설정할 수 있다.

<session-config>
	<session-timeout>time</session-timeout>
</session-config>

time은 초 단위로 작성하면 된다.

728x90
반응형