728x90
반응형
| 세션과 쿠키(Session, Cookie)
- 웹 서비스는 HTTP 프로토콜을 기반으로 사용자와 통신한다. HTTP 프로토콜은 클라이언트와 서버와의 관계를 유지하지 않는 특징인 Stateless 기반인 프로토콜이다.
- 이런 Stateless 상태를 해결하는 두 가지 방식이 있는데 세션(Session)과 쿠키(Cookie)다.
- 두 방식 모두 사용자와 서버의 연결 상태를 유지해주는 방법으로, 세션은 서버에서 연결 정보를 관리하는 반면 쿠키는 사용자에 측에서 연결 정보를 관리하는 데 차이가 있다.
쿠키(Cookie)란?
- 클라이언트를 식별할 때 사용. 클라이언트(브라우저) 로컬에 저장되는 이름과 값의 쌍으로 구성된 작은 정보
- 기본적으로 아스키 문자만 저장 가능하다. (한글은 URL인코딩 필요) 이외에도 도메인 정보, path정보, 유효기간 등을 지정할 수 있다.
- 서버에서 생성 후 응답과 함께 클라이언트에 전송. 브라우저에 저장되며 유효기간 이후에는 자동으로 삭제 된다 서버에서 요청 시 (도메인, path)가 일치하는 경우에만 자동으로 전송한다.
Cookie cookie = new Cookie("id", ""); // 변경할 쿠키와 같은 이름 쿠키 생성
cookie.setMaxAge(0); // 유효기간을 0으로 설정(삭제)
response.addCookie(cookie); // 응답에 쿠키 추가
cookie.setValue(URLEncoder.encode("남궁성")); // 값의 변경
cookie.setDomain("[www.fastcampus.co.kr](<http://www.fastcampus.co.kr/>)"); // 도메인의 변경
cookie.setPath("/ch2"); // 경로의 변경
cookie.setMaxAge(60*60*24*7); // 유효기간의 변경
response.addCookie(cookie); // 응답에 쿠키 추가
세션(Session)이란?
- 서로 관련된 요청과 응답을 하나로 묶은 것 - 쿠키를 이용한다.
- 브라우저의 요청들은 서로 독립적이다. 서로 관련된 요청들을 하나로 모아서 브라우저마다 개별 저장소(session객체)를 서버에서 제공한다.
- 세션은 쿠키를 기반하고 있지만, 사용자 정보 파일을 브라우저에 저장하는 쿠키와 달리 서버 측에서 저장되고 관리한다.
// 1. 수동 종료
HttpSession session = request.getSession();
session.invalidate(); // 세션을 즉시 종료
session.setMaxInactiveInterval(30*60) // 예약 종료 (30분 후)
// 자동 종료(web.xml)
<session-config>
<session-timeout>30</session-timeout> // 분단위
</session-config>
728x90
반응형
'🍃SpringFramework > SpringMVC' 카테고리의 다른 글
[SpringMVC] 데이터 변환 / 검증 (0) | 2023.08.19 |
---|---|
[SpringMVC] 예외 처리 (Exception) (0) | 2023.08.19 |
[SpringMVC] redirect & forward (0) | 2023.08.19 |
[SpringMVC] RequestParam & ModelAttribute (0) | 2023.08.19 |
[SpringMVC] Servlet → JSP → MVC (0) | 2023.08.19 |