在運(yùn)行 Servlet 程序時(shí),可能需要一些輔助信息,例如,文件使用的編碼、使用 Servlet 程序的共享信息等,這些信息可以在 web.xml 文件中使用一個(gè)或多個(gè) 元素進(jìn)行配置。當(dāng) Tomcat 初始化一個(gè) Servlet 時(shí),會(huì)將該 Servlet 的配置信息封裝到 ServletConfig 對(duì)象中,此時(shí)可以通過(guò)調(diào)用 init(ServletConfig config)方法將 ServletConfig 對(duì)象傳遞給 Servlet。
ServletConfig 接口中定義了一系列獲取配置信息的方法,如表 1 所示。
表 1 ServletConfig接口的常用方法
方法說(shuō)明 |
功能描述 |
---|---|
String getInitParameter(String name) |
根據(jù)初始化參數(shù)名返回對(duì)應(yīng)的初始化參數(shù)值 |
Enumeration getInitParameterNames() |
返回一個(gè) Enumeration 對(duì)象,其中包含了所有的初始化參數(shù)名 |
ServletContext getServletContext() |
返回一個(gè)代表當(dāng)前 Web 應(yīng)用的 ServletContext 對(duì)象 |
String getServletName() |
返回 Servlet 的名字,即 web.xml 中 元素的值 |
下面以 getInitParameter() 方法為例,分步驟講解該方法的使用。
在 com.mengma.servlet 包中創(chuàng)建一個(gè)名稱為 TestServlet02 的 Servlet 類,并在類中編寫(xiě)用于讀取 web.xml 文件中參數(shù)信息的代碼,如下所示。
package com.mengma.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class TestServlet02 extends HttpServlet {
protected void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {
PrintWriter out = response.getWriter();
ServletConfig config = this.getServletConfig();
String param = config.getInitParameter("encoding");
out.println("encoding=" + param);
}
protected void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {
this.doGet(request, response);
}
}
2、配置參數(shù)信息
在 web.xml 文件中為 Servlet 配置一些參數(shù)信息,具體的配置代碼如下所示:
<servlet>
<servlet-name>TestServlet02</servlet-name>
<servlet-class>com.mengma.servlet.TestServlet02</servlet-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>TestServlet02</servlet-name>
<url-pattern>/TestServlet02</url-pattern>
</servlet-mapping>
在上面的參數(shù)信息中,<init-param> 節(jié)點(diǎn)表示要設(shè)置的參數(shù),該節(jié)點(diǎn)中的 表示參數(shù)的名稱, <param-value>表示參數(shù)的值,在 <init-param>節(jié)點(diǎn)中為 TestServlet02 配置了一個(gè)名為 encoding 的參數(shù),并設(shè)置其參數(shù)的值為 UTF-8。
啟動(dòng) Tomcat 服務(wù)器,在瀏覽器的地址欄中輸入地址 http://localhost:8080/servletDemo01/TestServlet02 訪問(wèn) TestServlet02,結(jié)果如圖 1 所示。
圖 1 運(yùn)行結(jié)果
從圖 1 中可以看出,web.xml 文件中為 TestServlet02 配置的編碼信息被讀取了出來(lái)。由此可見(jiàn),通過(guò) ServletConfig 對(duì)象可以獲得 web.xml 文件中的參數(shù)信息。