ServletConfig接口
在Servlet运行期间,经常需要一些辅助信息,例如,文件使用的编码,使用Servlet程序的公司等,这些信息可以在web.xml文件中使用一个或多个<init-param>元素进行配置。当Tomcat初始化一个Servlet时,会将该Servlet的配置信息封装到一个ServletConfig对象中,通过调用init(ServletConfig cofig)方法将ServletConfig对象传递给Servlet。ServletConfig定义了一系列获取配置信息的方法,接下来通过一张表来描述ServletConfig的常用方法,如表1所示。
表1 ServletConfig接口的常用方法
方法说明 | 功能描述 |
---|---|
String getInitParameter(String name) | 根据初始化参数名返回对应的初始化参数值 |
Enumeration getInitParameterNames() | 返回一个Enumeration对象,其中包含了所有的初始化参数名 |
ServletContext getServletContext() | 返回一个代表当前Web应用的ServletContext对象 |
String getServletName() | 返回Servlet的名字,即web.xml中<servlet-name>元素的值 |
了解了ServletConfig接口的常用方法。接下来以getInitParameter()方法为例,分步骤讲解该方法的使用,具体如下:
(1)首先在web.xml文件中为Servlet配置一些参数信息,具体如下:
<servlet>
<servlet-name>TestServlet02</servlet-name>
<servlet-class>cn.itcast.chapter04.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-name>表示参数的名称,<param-value>表示参数的值,我们在<init-param>节点中为TestServlet02配置了一个名为“encoding”的参数,并且参数的值为UTF-8。
(2)编写TestServlet02类,实现读取web.xml文件中的的参数信息,TestServlet02的实现代码如例1所示。
例1 TestServlet02.java
1 package cn.itcast.chapter04.servlet;
2 import java.io.*;
3 import javax.servlet.*;
4 import javax.servlet.http.*;
5 public class TestServlet02 extends HttpServlet {
6 protected void doGet(HttpServletRequest request,
7 HttpServletResponse response) throws ServletException,
IOException {
8 PrintWriter out = response.getWriter();
9 // 获得ServletConfig对象
10 ServletConfig config = this.getServletConfig();
11 // 获得参数名为encoding对应的参数值
12 String param = config.getInitParameter("encoding");
13 out.println("encoding="+param);
14 }
15 protected void doPost(HttpServletRequest request,
16 HttpServletResponse response) throws ServletException,
IOException {
17 this.doGet(request, response);
18 }
19 }
(3)启动Tomcat服务器,在浏览器的地址栏中输入URL地址http://localhost:8080/chapter04/
TestServlet02访问TestServlet02,显示的结果如图1所示。
图1 运行结果
从图1可以看出,在web.xml文件中为TestServlet02配置的编码信息被读取了出来。由此可见,通过ServletConfig对象可以获得web.xml文件中的参数信息。