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 + " = " + 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所示。
图4.5 输出Servlet的配置信息
由于本书的程序都是基于Eclipse IDE for Java EE开发的,因此,用getReadPath方法输出的当前Web应用程序的本地目录是Eclipse IDE for Java EE的workspace目录及其子目录。