JSP 페이지의 내부 객체
: 내부 객체는 JSP 페이지가 사용자의 브라우저에게 요청될 때 자동으로 생성되는 객체로 특정한 자
바 클래스 또는 인터페이스의 형태를 가지고 있다.
기본 객체 (implicit object, 내장 객체)
■ 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
Scope, 스코프
: 웹 어플리케이션은 page, request, session, application 이라는 4개의 영역을 가지고 있으며 기본
객체의 영역은 객체의 유효기간이라고도 불리며, 객체를 누구와 공유할 것인가를 나타낸다.
■ page 영역
한 번의 웹브라우저(클라이언트)의 요청에 대해 하나의 JSP 페이지가 호출되며 웹브라우저의
요청이 들어오면 이때 단 한 개의 페이지만 대응 된다.
생성된 객체는 PageContext 에 저장된다.
쉽게 말해 service()를 벗어나면 죽는다.
servlet → jsp 으앙 주금 //void service()
■ request 영역
한 번의 웹브라우저(클라이언트)의 요청에 대해 같은 요청을 공유하는 페이지가 대응되며
웹브라우저가 한 번의 요청에 단지 한 개의 페이지만 요청될 수 있고, 같은 request 영역이면
두개의 페이지가 같은 요청을 공유 한다. include 액션 태그, forward 액션 태그를 사용 시 공유가능
생성된 객체는 HttpServletRequest 에 저장
■ session 영역
하나의 웹브라우저 당 1 개의 session 객체가 생성된다.
같은 웹브라우저 내에서는 요청되는 페이지 들은 같은 객체를 공유한다.
생성된 객체는 HttpSession 에 저장된다.
동일한 클라이언트만 사용가능
■ application 영역
하나의 웹 어플리케이션 당 1개의 application 객체가 생성된다. 같은 웹 어플리케이션에
요청되는 페이지들은 같은 객체를 공유한다.
생성된 객체는 실질적으로는 ServletContext 에 저장된다.
내부 객체의 속성
: request, session, application, pageContext 내부 객체는 임의 속성(attribute) 값을 저장하고 읽을
수 있는 다음의 메소드를 제공 한다.
■ 메소드
⋅void setAttribute(String key, Object value)
주어진 key속성의 값을 value로 지정한다.
⋅Enumeration getAttributeNames()
모든 속성의 이름을 구한다.
⋅Object getAttribute(String key)
주어진 key속성의 값을 얻어낸다.
⋅void removeAttribute(String key)
주어진 key속성의 값을 제거한다.