묵시적 객체 (1)

💻 Programming/JSP

[JSP] Implicit Objects ( 묵시적 객체들 )

JSP Implicit Objects는 Java 객체들입니다. 명시적으로 개발자가 선언하지 않아도 JSP Container에서 제공하는 객체들이라고 보시면 되겠습니다. 그래서 JSP Implicit Objects 를 pre-defined 변수라고 하기도 합니다.

 

JSP 는 아홉가지의 Implicit Objects를 지원합니다. 저도 아는 객체들이 눈에 보이네요.

 

ObjectDescription
requestThis is the HttpServletRequest object associated with the request.
responseThis is the HttpServletResponse object associated with the response to the client.
outThis is the PrintWriter object used to send output to the client.
sessionThis is the HttpSession object associated with the request.
applicationThis is the ServletContext object associated with application context.
configThis is the ServletConfig object associated with the page.
pageContextThis encapsulates use of server-specific features like higher performance JspWriters.
pageThis is simply a synonym for this, and is used to call the methods defined by the translated servlet class.
ExceptionThe Exception object allows the exception data to be accessed by designated JSP.


The request Object:

request 객체는 javax.servlet.http.HttpServletRequest 객체의 인스턴스입니다. 사용자가 페이지를 요청할 때마다 JSP engine 이 해당 요청에 대한 새로운 request객체를 생성합니다. request 객체는 HTTP header 정보를 얻어오기위한 메소드를 제공합니다. form data, cookies, HTTP methods같은 정보들이 헤더정보에 있겠죠.

request 객체와 관련된 메소드들에 대한 정보 및 사용법은 오른쪽 링크에서 확인하실 수 있습니다.  JSP - Client Request.


The response Object:

response 객체는 javax.servlet.http.HttpServletResponse 객체의 인스턴스입니다. 서버가 request 객체를 만드는 것처럼, 클라이언트로 보내기위한 response 객체도 만듭니다.

response 객체는 또한 새로운 HTTP헤더 생성을 다루기위한 인터페이스를 정의합니다. 이 객체를 통해서 JSP 개발자들은 쿠키, 날짜 스탬프,  HTTP 상태 코드등을 추가할 수 있습니다. 

response 객체와 관련된 메소드들에 대한 정보 및 사용법은 우측 링크에서 확인하실 수 있습니다.  JSP - Server Response.


The out Object:

out 객체는 javax.servlet.jsp.JspWriter 객체의 인스턴스이며 content를 response안에 보내기 위해서 사용됩니다.

처음의 JspWriter 객체는 페이지의 버퍼 사용여부에 따라 다르게 초기화됩니다.  Buffering 기능은 page 디렉티브의 buffered='false' 속성을 통해서 쉽게 off 할 수 있습니다. JspWriter 객체는 java.io.PrintWriter 클래스와 거의 동일한 메소드들을 가지고 있습니다. 하지만 JspWriter는 추가적으로 버퍼링을 다루기 위한 메소드들을 가지고 있습니다. PrintWriter 객체와는 다르게 JspWriter 는 IOExceptions을 던집니다.

 

 boolean, char, int, double, object, String, etc. 을 쓰고싶을 때 사용하는 메소드는 아래와 같습니다.

MethodDescription
out.print(dataType dt)Print a data type value
out.println(dataType dt)Print a data type value then terminate the line with new line character.
out.flush()Flush the stream.


The session Object:

session객체는 javax.servlet.http.HttpSession의 인스턴스죠.  Java Servlets의 세션과 동일한 역할을 한다고 보시면 됩니다.

session 객체는 사용자가 여러번 요청을 하게 될 때 그 요청들 사이에 세션을 추적 및 관리하기 위해서 사용됩니다.  

session 객체의 사용법은 우측 링크에서 확인하실 수 있습니다.  JSP - Session Tracking.


The application Object:

application 객체는 ServletContext객체의 wrapper객체입니다. 실제로는 javax.servlet.ServletContext 객체의 인스턴스입니다.

 이 객체는 JSP page 생명주기 전체를 대표한다고 보시면 됩니다. 애플리케이션이 종료되기 전까지 살아있는 객체죠. JSP 페이지가 초기화될 때 생성되고  jspDestroy()메소드에 의해 JSP페이지가 소멸될 때 이 객체도 소멸됩니다.

 application 객체에 속성을 추가함으로써 해당 애플리케이션을 구성하는 모든 JSP 파일들이 이곳에 접근할 수 있는 권한이 생기게 됩니다.

Application 객체의 간단한 사용법은 우측 링크에서 확인하실 수 있습니다.  JSP - Hits Counter


The config Object:

config 객체는 javax.servlet.ServletConfig 의 인스턴스입니다.  

이 객체는 JSP 개발자가 Servlet 이나 JSP 엔진 초기화 파라미터 ( paths 또는 file 위치 등 )에 접근할 수 있도록 해줍니다.

많이 쓰이지 않는 객체이며 아마 쓰게 된다면 아래와 같이 쓰는 것 말고는 정말 쓸일이 없을 것입니다. 


config.getServletName();


이건 서블릿명을 얻어오는 메소드입니다. WEB-INF\web.xml 파일의   <servlet-name> 요소에 들어있는 이름을 얻어오는 것입니다. 


The pageContext Object:

pageContext 객체는  javax.servlet.jsp.PageContext 객체의 인스턴스입니다.   pageContext 객체는 JSP page 전체를 대표합니다.

 이 객체는 페이지 정보를 얻어오기 위한 수단으로 사용됩니다.  

이 객체는 각 요청마다 request 와 response객체로의 래퍼런스를 저장합니다. application, config, session, 그리고 out 객체들은 이 객체의 속성에 접근해서 얻어올 수 있습니다.  pageContext 객체는 또한 해당 JSP page에서 발생된 directives의 정보를 저장하고 있습니다. ( buffering 정보,  errorPageURL, 그리고 page scope같은 정보들 말이죠 ).

 PageContext 클래스는 PAGE_SCOPE, REQUEST_SCOPE, SESSION_SCOPE, 그리고 APPLICATION_SCOPE 필드들을 정의합니다. 40개 이상의 메소드를 제공하며 그 중 반은 javax.servlet.jsp.JspContext 클래스에서 상속받은 메소드들입니다.

가장 중요한 메소드 중 하나는 removeAttribute인데 이 메소드는  하나 또는 두개의 파라미터를 받습니다. pageContext.removeAttribute ("attrName") 는 모든 scope에서 attrName 속성을 제거합니다. 아래에 나온 문장은 page scope에서만 해당 속성을 제거합니다. 

 

  pageContext.removeAttribute("attrName", PAGE_SCOPE);


pageContext 객체에 대한 사용법은 우측 링크에서 확인하실 수 있습니다. JSP - File Uploading.


The page Object:

실제 페이지를 참조하고 있는 객체입니다. JSP page전체를 대표하는 객체라고 생각하시면 됩니다..

이 페이지 객체는 실제로 자바에서 나오는 this 객체의 동의어라고 보시면 되겠습니다.  


The exception Object:

exception 객체는 wrapper 객체입니다. 이전 페이지에서 던져진 exception을 가지고 있죠.  뭐 이거야 자바를 하신 분들이라면 예외처리를 위한 객체라고 금방 아실 겁니다. 뭐 더 설명할게 없네요.

이 객체에 대한 사용법은 우측 링크에서 확인하실 수 있습니다. JSP - Exception Handling.

 

 

 

 

Reference : http://www.tutorialspoint.com/jsp/jsp_implicit_objects.htm