개발 공부중

[JSP] Scope 본문

JSP

[JSP] Scope

개발자 leelee 2023. 2. 27. 23:49

JSP에서 Scope란,

프로그램에서 사용되는 변수들은 사용 가능한 범위를 가지고, 이 때 변수의 범위를 Scope 스코프라고 한다.

4가지 Scope

  • Application : 웹 어플리케이션이 시작되고 종료될 때까지 변수가 유지되는 경우 사용
  • Session : 웹 브라우저 별로 변수가 관리되는 경우 사용
  • Request : http요청을 WAS가 받아서 웹 브라우저에게 응답할 때까지 변수가 유지되는 경우 사용
  • Page : 페이지 내에서 지역변수처럼 사용

( Application > Session > Request > Page )

각각의 영역과 관련된 자신의 속성을 가질 수 있다. 

 

 


1. Page Scope

다른 내장 객체를 얻어내거나

현재 페이지의 요청과 응답의 제어권을 다른 페이지로 넘겨주는데 사용한다.

PageContext 추상 클래스를 사용한다.

다른 scope와 다르게 마치 지역변수처럼 사용된다.

 

pageContextTest1.jsp

pageContextTest1.jsp 페이지의 요청과 응답에 관한 제어권을 pageContextTest2.jsp에 넘긴다는 뜻

 

pageContextTest2.jsp

pageContextTest3.jsp에 있는 내용을 pageContextTest2.jsp에 포함시킨다는 뜻

 

pageContextTest3.jsp
실행화면

포워딩 방식으로 주소가 pageContextTest1.jsp 가 된다.

 

포워딩 방식이란? 

요청과 응답에 대한 제어권을 다른 페이지로 넘기더라도 브라우저에 표시되는 주소가 유지되는 방식이다.

현재 페이지의 요청과 응답의 정보에 대한 제어권만이 다른 페이지로 넘어가고 정보가 유지된다.

 

반대 방식인 라다이렉트 방식도 있다.

리다이렉트 방식이란?

브라우저에 표시되는 주소가 바뀌는 방식이다.

이동할 페이지로 요청과 응답객체를 새로 생성하여 전송하여 정보가 유지되지 않는다.

 

 


2. Request Scope

http요청이 들어와서 WAS가 받아서 웹브라우저에게 응답이 나갈때까지 변수 값을 유지할 때 사용한다.

HttpServletRequest 객체를 사용한다.

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

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

서블릿에서는 HttpServletRequest 객체를 사용한다.

makeTime.jsp
viewTime.jsp
실행화면

 


3. Session Scope

웹 브라우저 별로 변수를 관리하고자 할 때 사용한다.

장바구니처럼 사용자 별로 각각 관리해주는 객체이다.

 

 

4. Application Scope

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

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

ApplicationScope01.java - value 값에 1을 저장한다.
ApplicationScope02.java - 저장된 value 값에 1을 더하고 그 결과를 출력한다
applicationscope01.jsp -저장된 value 값에 2을 더하고 그 결과를 출력한다
ApplicationScope01.java
ApplicationScope02.java
applicationscope01.jsp

서버가 종료되지 않는 이상 value값이 유지되는 걸 확인할 수 있다. 

Comments