[JSP] 내부객체의 스코프
JSP의 내부 객체란 JSP 페이지가 사용자의 브라우저에게 요청될 때 자동으로 생성되는 객체를 말하는데, 특정한 자바 클래스 또는 인터페이스의 형태를 갖는다.
scope
웹 애플리케이션은 page, request, session, application 이라는 4개의 영역을 가지고 있으며 객체를 누구와 공유할 것인가를 나타낸다. 영역은 객체의 유효기간이라고도 한다.
page
한 번의 웹브라우저(클라이언트)의 요청에 대해 하나의 JSP 페이지가 호출되며 웹브라우저의 요청이 들어오면 이때 단 한 개의 페이지만 대응 된다. 생성된 객체는 PageContext 에 저장된다. 쉽게 말해 service()를 벗어나면 소멸한다.
request
한 번의 웹브라우저(클라이언트)의 요청에 대해 같은 요청을 공유하는 페이지가 대응되며 웹브라우저가 한 번의 요청에 단지 한 개의 페이지만 요청될 수 있고, 같은 request 영역이면 두 개의 페이지가 같은 요청을 공유 한다. include 액션 태그, forward 액션 태그를 사용 시 공유 가능. 생성된 객체는 HttpServletRequest 에 저장
session
하나의 웹브라우저 당 1개의 session 객체가 생성된다. 같은 웹브라우저 내에서는 요청되는 페이지 들은 같은 객체를 공유한다. 생성된 객체는 HttpSession 에 저장된다. 동일한 클라이언트만 사용가능
application
하나의 웹 애플리케이션 당 1개의 application 객체가 생성된다. 같은 웹 애플리케이션에 요청되는 페이지들은 같은 객체를 공유한다. 생성된 객체는 실질적으로는 ServletContext 에 저장된다.
기본 객체
request
- 클라이언트의 요청 정보를 담고 있는 객체
- 스코프: request
- 실제 타입: javax.servlet.http.HttpServletRequest 또는 javax.servlet.ServletRequest
response
- 요청에 대한 응답 정보를 담고 있는 객체
- 스코프: page
- 실제 타입: javax.servlet.http.HttpServletResponse 또는 javax.servlet.ServletResponse
out
- 페이지 내용을 담고 있는 출력 스트림 객체
- 스코프: page
- 실제 타입: javax.servlet.jsp.JspWriter
pageContext
- JSP 페이지 실행에 필요한 Context 정보를 담고 있는 객체
- 스코프: page
- 실제 타입: javax.servlet.jsp.PageContext
session
- 세션 정보를 담고 있는 객체
- 스코프: session
- 실제 타입: javax.servlet.http.HttpSection
application
- Context의 모든 페이지가 공유할 데이터를 담고 있는 객체
- 스코프: application
- 실제 타입: javax.servlet.ServletContext
config
- JSP 페이지의 서블릿 설정 데이터 초기화 정보 객체
- 스코프: page
- 실제 타입: javax.servlet.ServletConfig
page
- JSP 페이지를 구현한 자바 클래스 객체
- 스코프: page
- 실제 타입: java.lang.Object
exception
- JSP 페이지의 서블릿 실행 시 처리하지 못한 예외 객체
- 스코프: page
- 실제 타입: java.lang.Throwable
내부 객체의 속성
request, session, application, pageContext 내부 객체는 임의 속성(attribute) 값을 저장하고 읽을 수 있는 다음의 메서드를 제공 한다.
setAttribute( String key, Object value )
: 주어진 key 속성의 값을 value로 지정한다.getAttributeNames()
: 모든 속성의 이름을 구한다.getAttribute( String key )
: 주어진 key 속성의 값을 얻어낸다.removeAttribute( String key )
: 주어진 key 속성의 값을 제거한다.