본문 바로가기

JSP

내장객체

JSP의 내장객체는 아래와 같이 존재한다.
(request, response 는 제외)
 
ServletContext application = pageContext.getServletContext();
ServletConfig config = pageContext.getServletConfig();
HttpSession session = pageContext.getSession();
JspWriter out = pageContext.getOut();
Object page = this;

하나하나 간단하게 정리해보자

일단 pageContext라는 것이 존재한다.
이는 하나의 서블릿마다 존재하는 것으로 현 페이지내에서만 정보를 공유 할 수 있다.

ServletContext 객체는 하나의 웹 애플리케이션에 하나만 존재한다.
즉 하나의 ServletContext 객체 안에는 여러개의 pageContext들이 존재한다.

out 객체는 웹브라우저에 출력될 내용을 지정하는데 사용한다.
out.println("안녕하세요"); 이런식으로..

application 내장객체는
하나의 웹어플리케이션을 관리하고 웹어플리케이션내에서 정보를 공유하도록 한다.
위에서 보듯이 pageContext.getServletContext로 생성된다.

하나의 웹어플리케이션에 존재하는 모든 서블릿과 정보들을 공유하기 때문에
서버의 정보 출력이라든가..

Mime Type 출력 : <%=application.getMimeType("jabook.gif")%>
서버 프로그램 정보 : <%=application.getServerInfo()%>
실제 위치 경로 : <%=application.getRealPath("printServerInfo.jsp")%>
자바 서블릿 버전 : <%=application.getMajorVersion()%>
자바 서블릿 버전 : <%=application.getMinorVersion()%>

웹 애플리케이션 파라미터를 공유 할 수 있는데
webapps/myapplication/WEB-INF/web.xml


<context-param>
<param-name>
name
</param-name>
<param-value>
value
</param-value>
</context-param>

이렇게 정의해 놓은 값들을
application.getInitPrarameter(name);
으로 어느 서블릿에서나 가져올 수 있다.

파라미터가 여러개일 경우에는
Enumeration paramEnum = application.getInitParameterNames();
while(paramEnum.hasMoreElements()) {..
..
}
이런식으로 가져 올 수도 있다.


config 내장객체는
서블릿 컨테이너를 관리하고, 한 서블릿 컨테이너내에 존재하는 모든 웹 애플리케이션들이 초기화 정보를 공유하도록 도와주는 객체이다.
pageContext.getServletConfig()에서 자동으로 생성된다.

이 초기화 파라메터는 톰캣의 conf밑에 있는 web.xml에 정의되며

그 형식은 아래와 같다.
<servlet>
 <init-param>
  <param-name>
   파라미터 이름
  </param-name>
  <param-value>
   파라미터 값
  </param-value>
 </init-param>
</servlet>
(webapps/..../WEB-INF/web.xml이 아니다!)

그 사용은
Enumeration paramNames = config.getInitParameterNames();
while(paramNames.hasMoreElements()) {
 String paramName = (String)paramNames.nextElement();
 String paramValue = config.getInitParameter(paramName);
 out.println(paramName + " - " + paramValue + "<br>");
}


page 내장객체는 자기 자신을 참조한다.

출처 : jabook.org