웹에서의 상태 유지기술
- HTTP프로토콜은 상태 유지가 안되는 프로토콜이다.
- 상태 유지를 위해서 쿠키와 세션의 기술이 등장한다.
쿠키(Cookie)와 세션(Session)
쿠키
-사용자 컴퓨터에 저장
-저장된 정보를 다른 사람 또는 시스템이 볼 수 있는 단점
-유효시간이 지나면 사라진다.
-이름과 값 쌍으로 정보를 저장한다.
-이름-값 쌍 외에도 도메인(Domain), 경로(Path), 유효기간(Max-Age, Expires), 보안(Secure), HttpOnly 속성을 저장할 수 있다.
-브라우저별로 제한 값을 다르게 가져가고 있다.
Spring MVC에서의 Cookie 사용
-@CookieValue 애노테이션 사용
- 컨트롤러 메소드의 파라미터에서 CookieValue애노테이션을 사용함으로써 원하는 쿠키정보를 파라미터 변수에 담아 사용
-컨트롤러메소드(@CookieValue(value="쿠키이름", required=false, defaultValue="기본값") String 변수명)
세션
- 클라이언트(사용자,컴퓨터) 별로 서버에 저장
-서버가 종료되거나 유효시간이 지나면 사라짐
/*세션 생성 및 얻기
request의 getSession()메소드는 서버에 생성된 세션이 있다면 세션을 반환하고, 없다면 새롭게 세션을 생성하여 반환합니다.
새롭게 생성된 세션인지는 HttpSession이 가지고 있는 isNew()메소드를 통해 알 수 있습니다.*/
HttpSession session = request.getSession();
HttpSession session = request.getSession(true);
//request의 getSession()메소드에 파라미터로 false를 전달하면, 이미 생성된 세션이 있다면 반환하고 없으면 null을 반환합니다.
HttpSession session = request.getSession(false);
/*세션에 값 저장
name과 value의 쌍으로 객체 Object를 저장하는 메소드입니다.
세션이 유지되는 동안 저장할 자료를 저장합니다.*/
setAttribute(String name, Object value);
session.setAttribute(이름, 값);
//세션값 조회
//반환 값은 오브젝트 유형으므로 저장된 객체로 자료 유형 변환이 필요함
String value = (String) session.getAttribute("id");
//세션 값 삭제
removeAttribute(String name); // name값에 해당하는 세션 정보를 삭제
nvalidate(); //모든 세션 정보를 삭제
':: IT > 백엔드' 카테고리의 다른 글
백엔드 정의, HTTP, 브라우저, WAS, Servlet,JSP (0) | 2020.03.30 |
---|---|
SQL & JDBC 프로그래밍 (0) | 2020.03.30 |
[Spring] (0) | 2020.03.29 |
scope(스코프) (0) | 2020.03.28 |