
웹에서는 변수를 사용할 수 있는 4개의 범위가 있습니다.
그것을 스코프라고 하는데요. 오늘은 스코프의 종류에 대해 알아보겠습니다.
1. Page 영역
JSP 페이지 내에서만 객체가 유효한 영역입니다.
- pageContext라는 내장 객체를 통해서 접근할 수 있습니다. pageContext이름.setAttribute(), pageContext이름.getAttribute() 등의 방법으로 사용하면 됩니다.
- JSP 파일에 <% %> 스크립트 태그를 이용하여 변수를 선언하면 이 변수는 해당 JSP 파일 내에서만 유효합니다.
- forward가 될 경우 해당 페이지의 변수는 사용할 수 없습니다.
2. Request 영역
요청을 받아서 응답하기까지 객체가 유효한 영역입니다.
- JSP에서는 Request 내장변수를, 서블릿에서는 HttpServletRequest 내장 객체를 통해서 사용합니다. 마찬가지로 request.setAttribute(), getAttribute() 메서드로 사용할 수 있습니다.
- 메모리가 반환되는 시점은 Servlet의 service()메소드가 끝날 때입니다.
- Servlet에서 forward 또는 include 태그를 사용하여 다른 페이지로 접근하면 request 객체를 공유하여 사용할 수 있습니다.
3. Session scope
session 객체가 생성되고 소멸될 때까지 객체가 유효한 영역입니다.
- 서버는 하나의 웹브라우저가 접속할 때마다 세션을 하나 생성합니다.
- 웹 브라우저간의 탭간에 세션정보가 공유되기 때문에 각각의 탭에서 같은 session 정보를 사용할 수 있습니다.
- 세션이 소멸하는 시기는 미리 지정된 시간이 지나거나 탭이 닫히는 경우입니다.
- HttpSession 인터페이스를 구현한 객체를 사용합니다.
- 서블릿에서는 HttpServletRequest의 getSession() 메서드를 이용하여 session객체를 얻습니다.
- JSP에서는 session 내장 변수를 사용합니다.
- 마찬가지로 setAttribute(), getAttribute() 메서드를 사용합니다.
4. Application scope
하나의 application이 생성되고 소멸될 때까지 유지합니다.
application 이란 Eclipse의 하나의 프로젝트라고 생각하면 되고, 하나의 Server는 여러개의 Web application이 존재할 수 있습니다.
- 어플리케이션이 시작되서부터 종료될 때까지 변수를 사용할 수 있습니다.
- ServletContext 인터페이스를 구현한 객체를 사용합니다.
- JSP는 application 내장객체를 이용합니다.
- Servlet의 경우 getServletContext() 메서드를 이용합니다.
- getAttribue(), setAttribute() 메서드를 사용합니다.
- 모든 클라이언트가 공통으로 사용해야 할 값들이 있을 때 사용합니다.