JSP

[JSP&Servlet] Scope - Page, Request, Session, Application

유호야 2020. 12. 4. 18:56
반응형

Scope란?

: 변수를 어떤 범위 내에서 사용할 지를 정하는 기준

 

- 4가지 scope 

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

 

- Page Scope

- pageContext 추상 클래스를 사용
- JSP 페이지에서 pageContext라는 내장 객체로 사용 가능
- forward가 될 경우 해당 Page scope에 지정된 변수는 사용할 수 없다.
- 사용방법은 Application scope나 Session scope, request scope와 같다. (setAttribute, getAttribute)
- 마치 지역변수처럼 사용된다는 것이 다른 scope들과는 다르다. (해당 jsp나 서블릿을 사용할 때만 사용)
- jsp에서 pageScope에 값을 저장한 후 해당 값을 EL표기법, JSTL에서 사용할 때 사용된다.

 

- Request Scope

•http 요청을 WAS(서버)가 받아서 웹 브라우저에게 응답할 때까지 변수값을 유지하고자 할 경우 사용한다.
HttpServletRequest 객체를 사용한다.
JSP에서는 request 내장 객체를 사용한다.
서블릿에서는 HttpServletRequest 객체를 사용한다.
•값을 저장할 때는 request 객체의 setAttribute()메소드를 사용한다.
•값을 읽어 들일 때 request 객체의 getAttribute()메소드를 사용한다.
forward값을 유지하고자 사용한다.

- Session Scope

웹 브라우저(클라이언트)별로 변수를 관리하고자 할 경우 사용한다.(session 지속시간만료, 브라우저 종료시 사라짐)
•웹 브라우저간의 탭 간에는 세션정보가 공유되기 때문에, 각각의 탭에서는 같은 세션정보를 사용할 수 있다.
HttpSession 인터페이스를 구현한 객체를 사용한다.
JSP에서는 session 내장 객체를 사용한다.
서블릿에서는 HttpServletRequest getSession()메소드를 이용하여 session 객체를 얻는다.
 (request.getSession())
값을 저장할 때는 session 객체의 setAttribute()메소드를 사용한다. (session.setAttribute())
값을 읽어 들일 때는 session 객체의 getAttribute()메소드를 사용한다. (session.getAttribute())
로그인 여부처럼 사용자별로 유지가 되어야 할 정보가 있을 때 사용한다.

- Application Scope

웹 어플리케이션이 시작되고 종료될 때까지 변수를 사용할 수 있다.
ServletContext 인터페이스를 구현한 객체를 사용한다.
jsp에서는 application 내장 객체를 이용한다.
•서블릿의 경우는 getServletContext()메소드를 이용하여 application객체를 이용한다.
웹 어플리케이션 하나당 하나의 application객체가 사용된다.
(프로그램이 실행되고있는(서버에서)동안 계속 객체가 유지된다.)
값을 저장할 때는 application객체의 setAttribute()메소드를 사용한다.
값을 읽어 들일 때는 application객체의 getAttribute()메소드를 사용한다.
모든 클라이언트가 공통으로 사용해야 할 값들이 있을 때 사용한다.
(클라이언트가 바뀌어도 누적된다)

출처 : zester7.tistory.com/46

 

 

반응형

'JSP' 카테고리의 다른 글

[JSTL] list size jsp로 출력하기  (0) 2021.08.28
ajax HashMap 넘기기  (0) 2021.02.02
${page_num +1}  (0) 2021.01.26
댓글달기 script 부분  (0) 2021.01.23
JSTL 문자열 비교하고 싶을 때  (0) 2021.01.15