我們在配置servlet的時候,可能需要在啟動servlet的時候給他初始化一些參數,這樣我們可以在web.xml配置文件中對servlet進行配置。
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4">
<display-name>strutsDemo</display-name>
<jsp-config>
<taglib>
<taglib-uri>/WEB-INF/struts-bean.tld</taglib-uri>
<taglib-location>/WEB-INF/struts-bean.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/WEB-INF/struts-html.tld</taglib-uri>
<taglib-location>/WEB-INF/struts-html.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/WEB-INF/struts-logic.tld</taglib-uri>
<taglib-location>/WEB-INF/struts-logic.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/WEB-INF/struts-tiles.tld</taglib-uri>
<taglib-location>/WEB-INF/struts-tiles.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/WEB-INF/struts-nested.tld</taglib-uri>
<taglib-location>/WEB-INF/struts-nested.tld</taglib-location>
</taglib>
</jsp-config>
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.zy.pro.strutsdemo.control.ApplicationActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>2</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>onefileuploadservlet</servlet-name>
<servlet-class>org.zy.pro.strutsdemo.servlet.OneFileUploadServlet</servlet-class>
<init-param>
<param-name>a</param-name>
<param-value>aaaaaaaaaa</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>onefileuploadservlet</servlet-name>
<url-pattern>/onefileupload</url-pattern>
</servlet-mapping>
<servlet>
<description>Added by JBuilder to compile JSPs with debug info</description>
<servlet-name>debugjsp</servlet-name>
<servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
<init-param>
<param-name>classdebuginfo</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>3</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>debugjsp</servlet-name>
<url-pattern>*.jsp</url-pattern>
</servlet-mapping>
</web-app>
如我們以上代碼中的藍色部分。即實現了我們的配置,那么我們如何在我們的servlet中使用呢?
我們看我們的servlet部分代碼:
//Process the HTTP Post request
public void doPost(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
String a = this.getInitParameter("a");
System.out.println(" the a parameter initialize when loading : " +
a);
在我們的處理post的代碼中,我們可以取得我們的配置參數。
之后,我們就可以對此參數進行處理了。
如果我們通過次配置使用一個xml來實現對servlet的擴展配置的話,那么我們此時得到的是一個xml文件的路徑,那么我們可以通過對xml的讀取和解析來取得我們想要的參數。
但是,我們不能在啟動的時候給servlet初始化一個非String類的實例,如:
<init-param>
<param-name>util</param-name>
<param-value>org.lyj.commons.util.DigestUtil</param-value>
</init-param>
這種配置是錯誤的。因為我們的getInitParameter()方法僅能得到一個字符串類型的返回值。
以上是我的一點粗淺的認識,歡迎指導。