티스토리 뷰

스프링, 자바

jsp 와 세션

killog 2021. 1. 19. 20:02
반응형

학습 목표

  • 세션ㅣ 기본 객체와 세셩
  • session 속성
  • 세션을 사용한 로그인 처리

서버 세션을 이용해 클라이언트의 상태를 저장할 수 있다. 쿠키와의 차이점은 세션은 웹브라우저가 아니라 서버에 값을 저장한다는 것이다. 서버는 세션을 사용해 클라이언트 상태를 유지할 수 있기 때문에, 로그인한 사용자의 정보를 유지하기 떄문에, 로그인한 사용자 정보를 유지하기 위한 목적으로 세션을 사용한다.


세션 사용하기: session 기본 객체

 

세션은 웹브라우저와 연관된 서버 영역의 저장공간이다.

'웹 컨테이너'는 기본적으로 한 웹 브라우저 마다 한 세션을 생성한다. 즉, 같은 JSP 페이지라도 웹 브라우저에 따라 서로 다른 세션을 사용하낟.

웹 브라우저별 세션이 존재해, 세션은 웹 브라우저와 연관된 정보를 저장하기에 알맞은 장소이다. 즉, 쿠키가 클라이언트 측의 데이터 보관소라면, 세션은 서버 측 데이터 보관소이다. 쿠키와 마찬가지로 세션도 생성을 해야 정보를 저장할 수 있다 일단, 세션을 생성하면, session기본 객체를 통해 세션을 사용할 수 있다.

또한, 서로 다른 웹 어플리케이션은 세션을 공유하지 않는다.( 다른 서블릿 컨텍스트는 세션을 공유하지 않는다.)

세션 생성하기

<%@ page session ="true" %>

page 디렉티브의 session 속성은 기본값이 true 이므로 session의 속성값을 false 로 지정하지 않으면 세션이 생성된다. session 기본 객체를 통해서 세션을 사용할 수 있다.

한 번, 세션을 생성하면, 이후로는 이미 생성한 세션을 사용한다.

세션은 브라우저별로 세션 ID 를 할당 받아 사용한다. 이 세션ID 를 공유하기 위해 클라이언트와 서버는 쿠키를 이용한다.

즉, JSESSIONID 쿠키가 세션ID 를 공유할 때, 사용하는 쿠키이다.

기본 객체의 속성 사용

  • 한 번 생성된 세션은 지정한 유효 시간 동안 유지된다. 따라서 웹 애플리케이션을 실행하는 동안 지속적으로 사용해야하는 데이터의 저장소로 세션이 적당하다.
session.setAttribute("MEMID","Yummy");
session.getAttribute("MEMID");

세션 vs 쿠키

  • 세션이 쿠키보다 보안에 앞서다.
  • 쿠키는 HTTP 프로토콜인 경우, 누군가 쿠키의 값을 읽을 수 있다. 하지만, 세션의 경우 서버에만 저장되어 중요한 데이터를 저장하기에 알맞은 장소이다.
  • 또한, 쿠키 설정 여부에 관계없이 사용가능하다.
  • 쿠키가 안되는 경우,url 재작성 방식으로 세션id 을 공유한다.
  • 하지만, 세션은 여러 서버에 공유 할 수 없다. 즉, 서브 도메인과 도메인을 공유하지 못한다. 쿠키는 여러 도메인 주소 공유를 할 수 있다.

세션 종료

session.invalidate();

세션 유효 시간

  • 최근에 session기본 객체에 접근한 시간을 나타낸다.
  • 세션은 마지막 접근 이후, 일정 시간 이내에 다시, 세션에 접근하지 않는 경우, 자동으로 세션을 종료 할 수 있다.
session.getLastAccessedTime()  //1
session.setMaxLInactiveInterval(60*60); // 2. 세션 유효시간 지정  -> 음수, 0 으로 지정시, 세션은 유효시간이 없어지고, // 세션 객체가 계속 메모리에 남아 메모리 부족 현상이 발생한다. 따라서, 반드시 세션 유효시간을 ㄷ지정해야한다.

세션을 사용해 로그인 유지

  • 로그인에 성공하면, session 기본 객체의 특정 속성에 데이터를 기록한다.
  • 이후로 session기본 객체의 특정 속성이 존재하면, 로그인 한 것으로 간주
  • 로그아웃할 경우, session.invalidate()메소드를 호출해 세션을 종료한다.
반응형

'스프링, 자바' 카테고리의 다른 글

자바의 직렬화(Java Serialization)  (0) 2021.01.24
NIO 기반 입출력 및 네트워킹  (0) 2021.01.23
jsp 와 쿠키  (0) 2021.01.19
jsp 소스 코드의 동작 과정  (0) 2021.01.19
스프링 웹 개발 기초  (0) 2021.01.19
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함