Advanced   Java   Services Parameter mit JSTL aus der web.xml auslesen Back Next Up Home

init- und context-Parameter

init-Parameter sind Teil eines Servleteintrags, während context-Parameter in einem eigenständigen Contexteintrag stehen, der direkt unter dem Tag <webapp> angesiedelt ist. Das kann zum Beispiel so aussehen:

<web-app>
...
...
  <servlet>
    <servlet-name>FooServlet</servlet-name>
    <jsp-file>/HelloWorld3-Log4j.jsp</jsp-file>
    <init-param>
      <param-name>mail</param-name>
      <param-value>workslikeacharm</param-value>
    </init-param>
  </servlet>
  <servlet-mapping>
    <servlet-name>FooServlet</servlet-name>
    <!-- <url-pattern>/xyz.do</url-pattern> -->
    <url-pattern>/HelloWorld3-Log4j.jsp</url-pattern>
  </servlet-mapping>
...
...
  <context-param>
    <param-name>log4j-file</param-name>
    <param-value>WEB-INF/log4j.properties</param-value>
  </context-param>
...
...
</web-app>

Zwei web.xml

Weiter sind einer Java Server Page zwei verschiedene web.xml-Dateien zugeordnet. Es gibt eine web.xml im webapp-Verzeichnis, in dem auch die Java Server Page selbst liegt. Zum anderen gibt es im Verzeichnis <TomcatHome>\conf. eine web.xml, die zur Konfiguration aller java Server Pages dient. Man kann nicht ohne weiteres alle Parameter aus den beiden web.xml Dateien auslesen.


context-Parameter

context-Parameter werden immer aus der zur JSP gehörenden web.xml im webapp-Verzeichnis ausgelesen. Die im Verzeichnis <TomcatHome>\conf liegende web.xml wird beim Starten des Servers immer neu erzeugt und enthält keine context-Parameter. Eigene Einträge sind daher sinnlos.


init-Parameter

init-Parameter werden immer aus der im Verzeichnis <TomcatHome>\conf liegenden web.xml ausgelesen. Es werden die Parameter aus dem Servleteintrag mit dem Namen jsp ausgelesen. In Tomcat sieht dieser Eintrag folgendermaßen aus:

<servlet>
  <servlet-name>jsp</servlet-name>
  <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
  <init-param>
    <param-name>fork</param-name>
    <param-value>false</param-value>
  </init-param>
  <init-param>
    <param-name>xpoweredBy</param-name>
    <param-value>false</param-value>
  </init-param>
  <load-on-startup>3</load-on-startup>
</servlet>

Es ist auch möglich, init-Parameter aus der zur Webapplikation gehörenden web.xml auszulesen, dazu muß aber diese web.xml einen Servleteintrag enthalten. Ein solcher Eintrag kann etwa folgendermaßen aussehen:

<servlet>
  <servlet-name>FooServlet</servlet-name>
  <jsp-file>/HelloWorld.jsp</jsp-file>
  <init-param>
  <param-name>myname</param-name>
  <param-value>myvalue</param-value>
  </init-param>
</servlet>
<servlet-mapping>
  <servlet-name>FooServlet</servlet-name>
  <url-pattern>/HelloWorld.jsp</url-pattern>
</servlet-mapping>

Wichtig dabei ist, daß die in den rot eingefärbten Teilen angegebenen Dateien mit der tatsächlichen JSP-Datei übereinstimmen. Der Name des Servlets ist ein interner Name und völlig beliebig. Außerdem darf im Servlettag keine .class-Datei eingetragen werden.


Auslesen der context-Parameter
<p style="font-weight:bold">
Auslesen der context-param Einträge in der web.xml mit Hilfe des impliziten Objekts initParam
</p>
<ul>
  <c:forEach items='${initParam}' var='parameter'>
    <li>Name: <c:out value='${parameter.key}'/></li>
    <li>Value: <c:out value='${parameter.value}'/></li>
  </c:forEach>
</ul>

Auslesen der init-Parameter
<p style="font-weight:bold">
Auslesen der init-param Einträge in der web.xml mit Hilfe des impliziten Objekts pageContext
</p>
<c:set var="servletConfig" value="${pageContext.getServletConfig()}"/>
<c:set var="initEnumeration" value="${servletConfig.getInitParameterNames()}"/>

<c:forEach var="key" items="${initEnumeration}">
   <c:set var="value" value="${servletConfig.getInitParameter(key)}"/>
   <c:out value="key: ${key}"/><br/>
   <c:out value="value: ${value}"/><br/>
</c:forEach>
Valid XHTML 1.0 Strict top Back Next Up Home