scope는 범위, 영역 같은 뜻을 같는데, 프로그래밍을 할 때는, 변수(객체)의 범위의 의미를 갖는다.
WAS 내에 서블릿이나, jsp에서 변수(객체)를 사용하다보면 한 서블릿 내에서 사용을 끝내는 변수가 있기도 하고, 다른 서블릿 forward하는 변수, 세션이 종료될 때까지 갖고 있는 변수 등 변수의 사용 범위는 다양하다.
WAS에서는 사진과 같이 Scope를 4가지로 나눌 수 있다.
- Page - 서블릿이나 jsp 처럼 한 페이지 내에서만 지역변수같이 사용되는 객체
- Request - WAS가 HTTP 요청을 받고 응답을 보낼 때까지 사용되는 객체
- Session - 세션 객체가 생성되고 소멸될 때까지 사용되는 객체
- Application - 웹 애플리케이션이 시작되고 종료될 때까지 사용되는 객체.
각각의 Scope에서는 setAttribute(), getAttribute()의 메소드를 사용해 값을 저장하고 얻을 수 있다. 사용방법은 동일하다.
이 메소드들은 Object 타입으로 객체를 저장하기 때문에, 형변환이 필요하다.
Page Scope
- 서블릿에선 PageContext라는 추상클래스를, JSP에선 pageContext라는 내장 객체를 사용해서 변수를 공유한다.
- Page Scope의 변수는 forward가 된다거나, 다른 서블릿에선 사용할 수 없다.
- pageContext의 setAttribute(), getAttribute()로 데이터를 저장하고 읽을 수 있다.
- 지역 변수처럼 사용된다.
- jsp에선 EL표기법 등에서 사용된다.
Request Scope -> 사용 예 forward : jang-sn.tistory.com/54
- WAS가 HTTP 요청을 받고 응답을 보낼 때까지 변수를 유지하려고 할 때 사용한다.
- HttpServletRequest 객체를 사용해 변수를 공유한다. -> request, response 객체는 응답 후에 소멸된다. -> Request Scope의 범위와 관련된다.
- forward 할 때 값을 유지하기 위해 사용한다.
- 서블릿에선 HttpServletReque 객체를 사용하고, JSP에선 request 내장 변수를 사용한다.
- request의 setAttribute(), getAttribute()로 데이터를 저장하고 읽을 수 있다.
Session Scope
- 세션: 클라이언트의 상태 정보 유지를 위해 클라이언트마다 하나의 객체를 만들어 관리하는 것
- 클라이언트(웹브라우저)마다 변수를 관리하기 위해 사용한다.
- 웹 브라우저의 경우, 세션이 유지되기 때문에 여러 탭에서 같은 세션정보를 사용할 수 있다.
- HttpSession 인터페이스를 구현한 객체를 사용한다.
- 서블릿에선 HttpServletRequest의 getSession() 메소드를 사용해 session 객체를 얻고, JSP에선 session 내장 변수를 사용한다.
- seesion의 setAttribute(), getAttribute()로 데이터를 저장하고 읽을 수 있다.
- 세션 객체는 요청, 응답이 완료되도 사라지지 않는다.
- 클라이언트마다 유지되어야 하는 정보가 있을 때 사용한다.
Application Scope
- 하나의 서버에는 여러 웹 어플리케이션이 존재할 수 있지만, 각각의 웹앱은 애플리케이션 스코프를 위한 객체는 하나만 있다.
- 모든 클라이언트가 같이 접근하기 때문에 공통으로 사용하는 값을 위해 사용한다.
- 웹 앱이 시작되고, 종료될 때까지 변수를 사용할 수 있다.
- ServletContext 인터페이스를 구현한 객체를 사용한다
- 서블릿에선 getServletContext()메소드를 사용해 application 객체를 얻고, JSP에선 application 내장 객체를 사용한다.
- application의 setAttribute(), getAttribute()로 데이터를 저장하고 읽을 수 있다.
위 스코프들은 값을 공유하게 되는데, 존재하지 않는 값을 getAttribute() 할 수 있기 때문에 예외처리를 해줘야 한다.
'study > jsp, servlet ...' 카테고리의 다른 글
표현 언어 - EL(Expession Language) (0) | 2021.03.16 |
---|---|
redirect, forward + servlet, jsp (0) | 2021.03.07 |
JSP (0) | 2021.03.02 |
Servlet (0) | 2021.02.26 |
WAS (0) | 2021.02.24 |