4.4.6 ServletConfig对象的功能演示

优质
小牛编辑
123浏览
2023-12-01

在本节的示例中演示了如何在Servlet中通过访问ServletConfig对象的方式来获得Servlet的配置信息。

例子 : 用getLastModified方法控制浏览器使用缓存内容

1. 实例说明

本程序将通过ServletConfig对象得到三种信息:Servlet名称、Servlet的所有初始化参数名和参数值以及ServletContext对象,并通过调用ServletContext接口的getRealPath方法来获得当前Web应用程序的本地目录。

2. 编写MyServletConfig类

MyServletConfig是一个Servlet类,在该类中实现了上述的功能,代码如下:

package chapter4;

import java.io.*;

import javax.servlet.*;

import javax.servlet.http.*;

import java.util.*;

public class MyServletConfig extends HttpServlet

{

    protected void service (HttpServletRequest request,

            HttpServletResponse response) throws ServletException, IOException

    {

        response.setContentType("text/html;charset=UTF-8");

        PrintWriter out = response.getWriter();

        //  得到Servlet名

        out.println("Servlet名称:" + this.getServletName());

        //  得到Servlet初始化参数名集合

        Enumeration<String> params = this.getInitParameterNames();

        //  得到每一个Servlet初始化参数,并通过getInitParameter方法得到初始化参数值

        while (params.hasMoreElements())

        {

            String key = params.nextElement();          //  得到参数名

            String value = this.getInitParameter(key);  //  得到参数值

            out.println(key + "&nbsp;=&nbsp;" + value + "<p/>");

        }

        //  得到ServletContext对象

        ServletContext context = this.getServletContext();

        out.println("当前Web应用程序的本地目录:" + context.getRealPath("/"));

    }

}

在上面的代码中,通过getInitParameterNames方法得到了Servlet的所有初始化参数列表。但要注意的是该方法只返回初始化参数名的集合,要想获得某个参数的值,需要使用getInitParameter方法。

3. 配置MyServletConfig类

在该Servlet中需要配置两个初始化参数。这两个参数将在MyServletConfig类中被读取,并输出到客户端。MyServletConfig类的配置代码如下:

<servlet>

    <servlet-name>MyServletConfig</servlet-name>

    <servlet-class>chapter4.MyServletConfig</servlet-class>

    <!--  配置Servlet初始化参数  -->

    <init-param>

        <param-name>product</param-name>

        <param-value>洗衣机</param-value>

    </init-param>

    <init-param>

        <param-name>price</param-name>

        <param-value>300</param-value>

    </init-param>

</servlet>

<servlet-mapping>

    <servlet-name>MyServletConfig</servlet-name>

    <url-pattern>/MyServletConfig</url-pattern>

</servlet-mapping>

4. 测试MyServletConfig类

在浏览器地址栏中输入如下的URL:

http://localhost:8080/demo/MyServletConfig

浏览器中显示的输出结果如图4.5所示。

05

图4.5 输出Servlet的配置信息

由于本书的程序都是基于Eclipse IDE for Java EE开发的,因此,用getReadPath方法输出的当前Web应用程序的本地目录是Eclipse IDE for Java EE的workspace目录及其子目录。