본문 바로가기
업무일기

[JSP]scope영역 그리고 세션과 쿠키

by xunxou 2017. 2. 14.

1. JSP Scope

한개이상의 jsp가 모인 그룹

Scope 영역의 종류는 page, request, session, application

jsp가 제공해주는 내장객체는 request객체, session객체 ,application객체 이다.


영역(Scope) : 속성을 공유할 수 있는 유효범위




▶ Scope 영역 

Scope는 직역하면 범위를 말한다. 

JSP페이지에서 사용되는 객체들은 JSP 내장객체이던 페이지 내에서 만들어졌던 모두 정해진 영역안에서만 사용이 가능하다.

즉, 프로그래밍에서 scope는 변수에 대한 접근과 변수가 존재할 수 있는 영역을 의미한다.

또는 beans가 살아있을 수 있는 기간을 말하며 아래와 같이 page, request, session, application 4가지가 있다.




▷application

application 영역은 하나의 웹 어플리케이션 당 1개의 applicaition 객체가 생성된다.

즉, 같은 웹 어플리케이션에 요청되는 페이지들은 같은 객체를 공유한다.

한 사이트에 속해 있는 모든 페이지 영역에서 사용되는 객체이다. 모든이가 공유할 수 있는 데이터이다.

서버(톰캣)가 구동될때 생기는 객체이다.

=>웹 어플리케이션의 생명주기와 일치한다.



▷session

한 이용자가 한 사이트에서 지나가는 모든 페이지 영역에서 사용하는 객체

session은 맨 처음 딱 한번 생성되고 페이지를 이동할떄마다 그 session이 유지된다.

session 내장객체는 세션이 유지되고 있는 범위 안에서 즉, session scope안에서 서로 다른 페이지에서도 객체(데이터)들을 공유할 수 있는 속성을 가지고 있으며 이 속성에 내장된 객체(데이터)는 세션이 종료되는 순간에 반환된다.

session 영역은 하나의 웹 브라우저 당 1개의 session 객체가 생성된다.

즉, 같은 웹 브라우저 내에서는 요청되는 페이지들은 같은 객체를 공유하게 된다.

=>맨 처음 요청이 들어왔을때 딱 한번 생성되고 일정시간이 지나면 소멸한다.(session의 생성은 톰캣에서 한다.)

서버에 저장이 된다. 소멸과 유지시간은 임의로 변경이 가능하다



▷request

request객체가 포워드 되는 영역에서 사용되는 객체

request 영역은 객체를 하나 또는 두 개의 페이지 내에서 공유할 수 있다.

request객체 자체는 포워드해져야 의미가 있으며 소멸되는 성질을 가지고 있다.

즉 요청하고 포워드하는 과정의 jsp를 request영역이라고 한다.

(include 액션 태그, forward 액션 태그를 사용하면 request 기본 객체를 공유하게 되어서 같은 reqeust 영역이 된다.)

=>요청이 있을떄 생성되고 요청에 대한 처리가 끝나면 소멸한다.

 

 


▷page

현재 처리되고 있는 한개의 그 페이지 영역

이 page영역은 위의 3가지 영역과는 다르게 page의 내장객체가 아닌 pageContext 내장객체를 통해 접근할 수 있는 영역이다.

한번의 웹 브라우저(클라이언트)의 요청에 대해 하나의 jsp페이지가 호출된다. 웹 브라우저의 요청이 들어오면 이때 단 한개의 페이지에만 대응이 된다. 따라서 page영역은 객체를 하나의 페이지 내에서만 공유한다.

=> A페이지에서 pageContext.setAttribute()를 할 시 넘어간 B페이지에서는 관련된 속성을 사용할 수 없다.





 [객체 흐름을 나타낸 이미지]

2. Session vs Cookie

저장위치

  • Session
    • 서버에 저장된다.
  • Cookie
    • 클라이언트의 메모리에 저장된다.


 

 


[출처]

http://sensibilityit.tistory.com/45

http://m.blog.naver.com/milkoon1/220860106284