UL :)
UL의 개발 블로그
UL :)
전체 방문자
오늘
어제
  • 분류 전체보기 (220)
    • 일상 (1)
    • 회고록 (7)
    • ChatGPT 아카이빙 (0)
    • PS(Java) (114)
      • 백준 (37)
      • 인프런 강의 문제 (77)
    • Web (69)
      • Spring (18)
      • JPA (7)
      • JSP (9)
      • HTML5 (12)
      • CSS (19)
      • HTTP (0)
      • 보안 (2)
    • Language (5)
      • Java (3)
      • JS (1)
      • Python (1)
    • Git, GitHub (4)
    • Settings (18)
      • IntelliJ (7)
      • Eclipse (2)
      • VSCode (3)
      • Android Studio (1)
      • VMware (2)
      • Mac (0)
    • Etc (1)

블로그 메뉴

  • 홈
  • 태그

공지사항

인기 글

태그

  • 정렬
  • consumes
  • @RequestParam
  • @Column
  • 영속성컨텍스트
  • 1차 캐시
  • ReturnValueHandler
  • 요청헤더
  • IDENTITY 전략
  • ORM
  • BOJ
  • SEQUENCE 전략
  • @Table
  • @GetMapping
  • @PostMapping
  • EntityManagerFactory
  • 동일성보장
  • argumentresolver
  • @ManyToOne
  • produces
  • ViewName반환
  • 백준
  • HttpMessageConverter
  • @Id
  • JPA
  • HandlerMethodArgumentResolver
  • 엔티티 매핑
  • @JoinColumn
  • 영속성
  • TABLE 전략

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
UL :)

UL의 개발 블로그

Web/JSP

[JSP] Session 기본 개념

2020. 2. 27. 23:57

 

세션 : 클라이언트의 상태를 저장할 수 있다.


※쿠키와 다른점 : 웹 브라우저가 아니라 서버에 값을 저장한다.
                       세션은 오직 서버에만 생성된다.

서버는 세션을 사용해서 클라이언트 상태를 유지 할 수 있다.

로그인한 사용자 정보를 유지하기 위한 목적으로 세션을 사용한다.

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

=> 즉!  쿠키: 클라이언트 측의 데이터 보관소
           세션: 서버 측의 데이터 보관소

 

 


* 세션 생성

page 디렉티브의 session 속성을 true로 설정 (디폴트값이므로 저절로 생성됨)
웹 브라우저가 처음 접속할 때 세션을 생성하고, 이후로 생성된 세션 사용
session 클래스의 setAttribute, getAttribute메서드 사용


※ request.getSeesion() 메서드를 이용해서 세션을 생성할 수도 있다.(이때 page 디렉티브의 session 속성 값은 false로 설정해야 한다)

session 기본 객체는 웹 브라우저의 여러 요청을 처리하는 JSP 페이지 사이에서 공유 된다.
따라서 로그인한 회원정보등 웹 브라우저와 일대일로 관련된 값을 저장할 때에는 쿠키 대신 세션을 사용.

 


※ 쿠키 대신 세션을 사용하는 가장 큰 이유

세션이 쿠키보다 보안에서 앞선다. 쿠키는 네트워크를 통해 전달되므로 HTTP프로토콜을 사용하는 경우 외부인이 중간에 쿠키의 값을 읽어올 수 있다. 하지만 세션의 값은 서버에만 저장되기 때문에 중요한 데이터를 저장하기에 알맞다.

그렇지만 세션은 여러서버에서 공유할 수 없다는 단점이 있다. 반면 쿠키는 도메인을 이용해서 여러 도메인 주소에 공유할 수 있다. ex) Daum 포털 사이트

 

 

* 세션 종료

session.invalidate()메서드 사용 => session 기본 객체 삭제

 

 

* 세션 유효시간

1. WEB=INF\web.xml 파일에 session-config 태그 사용, sessino-timeout 태그 값(분 단위)으로 설정

 

<session-config>
	<session-timeoout>50</session-timeout>
</session-config>


※ 값을 0 이나 음수로 설정하면 invalidate()메서드를 호출하기 전까지 세션 객체가 서버에 유지되므로 메모리 부족 현상이 발생할 수 있다. 반드시 세션 타임아웃 시간을 지정해 주는 것이 좋다.


2. session 객체의 setMaxInactiveInterval 메서드 사용(초 단위)

 

session.setMaxInactiveInterval(60*60);

 

 

 

* 연관된 정보 저장을 위한 클래스 생성

세션에 여러 속성을 사용해서 연관정보들을 저장할 때, 속성값이 증가할수록 코드를 작성/분석/관리하는데 많은 시간이 소요된다. 예를 들면 이메일 주소 정보가 더는 필요하지 않아서 세션에 저장하지 않았는데 실수로 그 코드를 남겨둘 경우 NullPointerException이 발생할 수 있고 발생원인을 찾느라 시간을 허비할 수도 있다.

 

그러한 문제점을 줄이기 위해 클래스를 사용한다. 연관정보를 클래스로 묶어서 저장하면 각 정보를 개별 속성으로 저장하지 않고 한개 속성을 이용해서 저장 할 수 있게 된다. 세션에 저장한 객체를 사용할 때도 마찬가지다.

 

 

 

* 서블릿 컨텍스트와 세션

같은 서버에서 서로 다른 웹 어플리케이션은 각각 서로 다른 JSESSIONID 값을 사용한다.

세션 ID를 보관할 때 사용할 JSESSIONID 쿠키의 경로로 웹 어플리케이션의 컨텍스트 경로를 사용하기 때문이다.

같은 웹브라우저라도, 서로 다른 웹 어플리케이션에서는 세션을 공유하지 않는다.

 

 

 

저작자표시 (새창열림)

'Web > JSP' 카테고리의 다른 글

[MySQL] ERROR : The server time zone value ~ is unrecognized or represents more than one time zone.  (0) 2021.01.04
[Tomcat] 콘솔 한글 깨짐 해결  (1) 2020.12.24
[JSP] Cookie 기본 개념  (0) 2020.02.26
[Tomcat] cookie domain error  (0) 2020.02.26
[Error] java.lang.NoSuchMethodError  (0) 2020.02.24
    'Web/JSP' 카테고리의 다른 글
    • [MySQL] ERROR : The server time zone value ~ is unrecognized or represents more than one time zone.
    • [Tomcat] 콘솔 한글 깨짐 해결
    • [JSP] Cookie 기본 개념
    • [Tomcat] cookie domain error
    UL :)
    UL :)
    백엔드 개발자를 목표로 달리고 있습니다🔥

    티스토리툴바