본문 바로가기
SSR/Servlet & JSP

JSP SCOPE

by oncerun 2020. 5. 13.
반응형

Servlet과 JSP를 개발하다 보면 변수를 많이 다루게 됩니다.

어떤 변수는 웹 애플리케이션에서 공유하고 싶은 변수가 있을 수도 있고,  어떤 변수는 사용자 별로 유지하고 싶은 변수가 있을 수 있습니다.

또 어떤 변수는 포워딩 되는 동안 유지하고 싶은 변수가 있습니다.

이렇게 변수를 어떤 범위 내에서 사용하기 위해서는 스코프(scope)라는 것에 대해서 알아야 합니다.

 

Application 

웹 어플리케이션이 시작되고 종료될 때까지 변수가 유지되는 경우 사용

애플리케이션이 소멸될 때까지 존재합니다.

 

Session 

세션객체가 새성 돼서 소멸될 때까지입니다. 여러 개의 요청이 들어와도 남아있습니다. 상태 유지를 위해서 사용됩니다.

웹 브라우저 별로 변수가 관리되는 경우 사용

 

Request 

클라이언트로부터 요청이 들어와서 서버가 응답을 보낼 때까지 사용할 수 있는 범위

http요청을 WAS가 받아서 웹 브라우저에게 응답할 때까지 변수가 유지되는 경우 사용

 

Page 

선언된 한페이지 그 내에서 만 사용할 수 있는 범위

페이지 내에서 지역변수처럼 사용

 

 

 

 

 

1. Page scope

 

PageContext라는 추상 클래스를 사용합니다.

jsp페이지에서는 PageContext라는 내장 객체로 사용 가능합니다.

forward가 될 경우 page scope에 지정된 변수는 사용할 수 없다.

왜냐하면 클라이언트가 요청을 보냈을 때 jsp/서블릿이 요청을 받았을 때 페이 지하 나당 pageContext가 하나가 생성됩니다. 이 페이지를 이용될 때까지만 유효합니다.

 

포워드는 요청을 전부 해결하고 다음 jsp/서블릿으로 작업을 넘기므로  첫 번째 pageContext객체는 메모리에서 사라지고 새로운 PageContext가 생성되므로 연결되어 사용할 수 없습니다.

사용방법은. getAttribute. setAttribute로 사용합니다

 

 

2. Request Scope

 

http 요청을 was가 받아서 웹브라우저에게 응답할 때까지 유지하고자 할 경우 사용합니다

HttpServletRequest 객체를 사용합니다.

JSP에서는 request 내장 변수를 사용합니다.

Servlet에서는 HttpServletRequest객체를 사용합니다.

값을 저장할 때는 request객체의 setAttribute() 메서드를 사용합니다.

값을 읽어 들일 때는 request객체의 getAttribute() 메서드를 사용합니다.

forward시 값을 유지하고자 할 때 사용합니다.

 

즉 http요청을 was가 받아서 웹브라우저에게 응답할 때까지 변숫값을 유지할 경우에 사용하는데

요청이 들어오면 was는 request, response객체를 생성하여 서블릿의 service() 메서드의 인자에 넣어둡니다.

이러한 req, res객체를 다른 서블릿 또는 JSP에서 이용할 수 있도록 Request객체는 범위를 유지시켜주며 포워드를 하면 그 값이 유지한 채로 다른 서블릿이나 , JSP에서도 이용이 가능합니다.

 

 

3.Session scope

 

접속한 웹브라우저별로 정보를 관리하고 싶을 때 session scope를 이용합니다.

 

웹브라우저는 클라이언트일 수 있는데 클라이언트마다 상태 정보는 각각 다르므로  그러한 상태 정보를 유지하기 위해 사용합니다. 

 

웹 브라우저간의 탭 간에는 세션정보가 공유가 되기 때문에 각각의 탭에서는 같은 세션정보를 사용할 수 있습니다.

 

HttpSession 인터페이스를 구현한 객체를 사용합니다.

JSP는 session 내장 변수를 사용합니다.

 

서블릿에서는 HttpServletRequest의 getSession() 메서드를 이용하여 session객체를 얻어올 수 있습니다.

값을 저장할 때는 session객체의 setAttribute() 값을 읽을 땐 getAttribute()를 사용합니다.

예를 들어 인터넷 쇼핑에서 장바구니 같은 콘텐츠에서 사용자별로 유지되어야 할 정보가 있을 때 사용합니다.

세션 객체는 적당한 시간을 지정한다거나, 브라우저가 닫히면 없어집니다.

 

 

4.Application scope

 

웹 애플리케이션이 시작되고 종료될 때까지 변수를 사용할 수 있다.

ServletContext 인터페이스를 구현한 객체를 사용합니다.

JSP에서는 application 내장 객체를 이용합니다.

서블릿의 경우는 getServletContext() 메서드를 이용하여 application 객체를 이용합니다.

웹 애플리케이션 하나당 하나의 application 객체가 사용됩니다.

저장할 때나 읽어 들일 때는 다른 scope와 같습니다.

모든 클라이언트가 공통으로 사용해야 할 값들이 있을 때 사용합니다.

반응형

'SSR > Servlet & JSP' 카테고리의 다른 글

Filter  (0) 2020.05.24
DBCP를 이용해서 커넥션 풀 사용하기  (0) 2020.05.20
HttpServletRequest/Response  (0) 2020.05.09
JSTL  (0) 2020.04.28
View page 은닉하기.  (0) 2020.04.28

댓글