Advanced   Java   Services Parameter mit Scriptlets 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 pageContext-Objekts<br/>
mit Hilfe der Methode getServletContext().
<br/><br/>
<%  ServletContext servletContext = pageContext.getServletContext();
   Enumeration<String> contextEnum = servletContext.getInitParameterNames();
   for(;contextEnum.hasMoreElements();)
   {
      String key = contextEnum.nextElement();
      String value = servletContext.getInitParameter(key);
      out.println("key = " + key + "<br/>" );
      out.println("value = " + value + "<br/>" );
   }
   out.println("</b><br/>" );
%>
</p>

Auslesen der init-Parameter
<p style="font-weight:bold">
Auslesen der init-param Einträge in der web.xml mit Hilfe des pageContext-Objekts<br/>
mit Hilfe der Methode getServletConfig(). Gelesen werden beide web.xml
In Eclipse ist dies<br/>
C:\eclipse-workspaces\java\_ejb\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\conf\web.xml
<br/><br/>

<%  ServletConfig servletConfig = pageContext.getServletConfig();
   Enumeration<String> configEnum = servletConfig.getInitParameterNames();
   for(;configEnum.hasMoreElements();)
   {
      String key = configEnum.nextElement();
      String value = servletConfig.getInitParameter(key);
      out.println("key = " + key + "<br/>" );
      out.println("value = " + value + "<br/>" );
   }
   out.println("</b><br/>" );
%>
</p>
Valid XHTML 1.0 Strict top Back Next Up Home