[JSP] 내부객체의 스코프

Published: by Creative Commons Licence

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 속성의 값을 제거한다.