在運行 Servlet 程序時,可能需要一些輔助信息,例如,文件使用的編碼、使用 Servlet 程序的共享信息等,這些信息可以在 web.xml 文件中使用一個或多個 元素進行配置。當 Tomcat 初始化一個 Servlet 時,會將該 Servlet 的配置信息封裝到 ServletConfig 對象中,此時可以通過調用 init(ServletConfig config)方法將 ServletConfig 對象傳遞給 Servlet。
ServletConfig 接口中定義了一系列獲取配置信息的方法,如表 1 所示。
表 1 ServletConfig接口的常用方法
方法說明 |
功能描述 |
---|---|
String getInitParameter(String name) |
根據初始化參數名返回對應的初始化參數值 |
Enumeration getInitParameterNames() |
返回一個 Enumeration 對象,其中包含了所有的初始化參數名 |
ServletContext getServletContext() |
返回一個代表當前 Web 應用的 ServletContext 對象 |
String getServletName() |
返回 Servlet 的名字,即 web.xml 中 元素的值 |
下面以 getInitParameter() 方法為例,分步驟講解該方法的使用。
在 com.mengma.servlet 包中創建一個名稱為 TestServlet02 的 Servlet 類,并在類中編寫用于讀取 web.xml 文件中參數信息的代碼,如下所示。
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、配置參數信息
在 web.xml 文件中為 Servlet 配置一些參數信息,具體的配置代碼如下所示:
<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>
在上面的參數信息中,<init-param> 節點表示要設置的參數,該節點中的 表示參數的名稱, <param-value>表示參數的值,在 <init-param>節點中為 TestServlet02 配置了一個名為 encoding 的參數,并設置其參數的值為 UTF-8。
啟動 Tomcat 服務器,在瀏覽器的地址欄中輸入地址 http://localhost:8080/servletDemo01/TestServlet02 訪問 TestServlet02,結果如圖 1 所示。
圖 1 運行結果
從圖 1 中可以看出,web.xml 文件中為 TestServlet02 配置的編碼信息被讀取了出來。由此可見,通過 ServletConfig 對象可以獲得 web.xml 文件中的參數信息。