DevBoi

[Java] HttpSession에 대한 이해 본문

Language/[Java]

[Java] HttpSession에 대한 이해

HiSmith 2022. 2. 21. 15:44
반응형

HttpSessiondms Java 인터페이스 이며, 이를 사용하여, 세션을 제어할수 있다.

Session은 쿠키의 트래픽 이슈와 cookie변경으로 인한 보안 issue를 해결하기 위해 등장했다.

 

세션의 개념

1.session은 사전적 의미로 서버와 클라이언트 간의 반 영구적으로 상호작용하는 정보 교환이다.

2.session은 server로 요청 하는 client를 구별하기 위해 server에 저장되는 정보입니다.

- session은 client에 저장되는 쿠키와 다르게 server에 저장되므로 관리가 용이하고 효율적이며 보안에 강합니다.

3. server는 client request에 session-id를 생성하여 server와 client 브라우저 메모리에 쿠키로 저장한다.

-위 쿠키는 일반적인 쿠키가 아닌 세션 쿠키이며, 인 메모리 쿠키 또한 임시 쿠키로 불린다.

-세션 쿠키는 서버가 종료되거나 유효기간이 만료하거나 클라이언트 브라우저가 종료되면 삭제된다.

 

-세션의 단점 : 서버에 부하가 있고, 로드밸런싱 시스템에서 세션 처리가 쉽지 않다는 것이다.

 

 

세션의 동작 원리

1. 클라이언트가 서버에 리소스를 request한다.

2. server는 client가 request한 request-header의 세션 쿠키를 통해 세션 아이디를 확인한다.

3. 세션아이디가 존재하면 서버는 세션 아이디가 유효한지 확인후에, client의 request를 처리하고 응답한다.

4. 세션 아이디가 존재하지 않으면, 서버는 setCookie를 통해 세션 아이디를 생성후 response항목에 내린다.

5. 위 4번 처리후 클라이언트는 서버에 request시 server로 부터 response한 session-id를 request-header에

추가하여 request합니다.

 

session 종료시기

- 타임아웃,session 객체의 Invalidate()호출,애플리케이션 or server종료

 

<Httpsession 소개>

-HttpSession은 client request에서 client를 식별하고 해당 clent정보를 저장하는 방법을 제공하는

java의 public interface이다.

HttpSession interface를 사용하는 서블릿 컨테이너는 server와 client간의 session을 제어한다.

 - servlet container는 웹 컨테이너라고도 불리고, Tomcat,JBoss,Jetty등이 대표적이다.

 

<관련 메소드>


 - HttpSession object 생성 관련

HttpServletRequestObject getSession  -> 기존 세션이 있다면, 해당 세션을 없다면 신규 생성후 반환

getSession(false) -> 기존 Session이 있으면 기존 session object를 , 없다면 null반환

 

 - 기타 사용 관련

  • setAttribute(String, Object)
  • getAttribute(): Object
  • getCreationTime(): long
  • getLastAccessedTime(): long
  • setMaxInactiveInterval(int second) // client가 설정 시간 동안 request가 없으면 session 만료
  • getMaxInactiveInterval(): int
  • invalidate() : // session 종료(session에 속한 속성들도 함께 제거)
  • getId() : String // jSessionId 반환

 

 

반응형