Back-end/JSP

JSP) 내장 객체(3) - session 의미와 특징

luana_eun 2022. 3. 1. 16:27
728x90

session 이란?

session을 이해하기 전에 먼저, http프로토콜의 동작 방식을 알아야한다. 

HTTP 프로토콜은 요청에 대한 응답을 하면 바로 연결을 끊는다. => 연결 상태 유지X

연결상태가 유지되지 않으면 로그인처럼 정보가 유지되어야 할때 유지할 방법이 없다.

이런 HTTP의 특징을 보완하기 위해 session, cookie가 사용된다. 

 

cookie는 클라이언트에 저장되는거고, session은 서버에 저장되는 값이다. 

즉, 세션은 연결 상태를 유지하기위해 서버측에서 저장하는 값.

 

세션의 동작 방식

1) 클라이언트가 서버에 처음으로 요청한다.(request)

2) 서버는 응답정보와 세션아이디를 같이 보낸다(response + 고유한 session 아이디)

3) 클라이언트는 받은 세션 정보를 자신의 쿠키에 저장한다. 

4) 클라이언트가 서버에 재요청한다.

    이때 전에 받아서 쿠키에 저장했던 세션값을 같이 보낸다. (request + session)

5) 서버는 클라이언트가 보낸 세션아이디를 판별해서 전에 왔던사람인지 아닌지 인식한다.  

=> 이런식으로 세션아이디로 요청시마다 판별하여 상태를 유지할 수 있다

 


 

Session 특징

1) 세션 아이디는 중복이 없는 고유한 값이어야 한다

2) 기본적으로 최대 접속시간이 설정되어있다

   은행 사이트에서 로그인 후에 30분동안 아무것도 안하면 자동으로 로그아웃된 경험이 있을것이다. 

   이게 바로 로그인 세션 최대시간이 설정된 것이다.

   세션에 접속해서 일정 시간동안 요청이 없으면 세션은 종료된다. 이 시간은 원하는 만큼으로 수정할 수 있다. 

3) 세션은 웹 브라우저 단위로 생성되고 종료한다

    웹 브라우저에는 크롬, 네이버웨일, 사파리 등이 있는데

    크롬에서 네이버에 로그인을 한 후 크롬으로 네이버를 또 키면 자동으로 로그인이 되어있다. 

    크롬이라는 웹 브라우저에 세션값이 유지되고있기 때문이다. 

    하지만 크롬에서 로그인을 하고 익스플로러로 열면 로그인이 되어있지않다. 

    이는 웹브라우저 단위로 세션이 유지되고 있는 뜻으로, 브라우저를 종료하면 세션도 종료된다.  

 

 


 

JSP session객체의 주요 메서드

세션 생성 시간: long create_time = session.getCreationTime();

최종 접속 시간: long last_time = session.getLastAccessTime();

경과 시간: long result = (create_time - last_time) / (60*1000);   -> ms단위를 분단위로 하기 위해.

              => 계산하면 접속한지 몇 분이 지났는지 알 수 있다. 

 
 

 

 

728x90