ServletContext接口简介
WEB容器在启动时,它会为每个WEB应用程序都创建一个唯一的ServletContext对象代表当前应用,ServletContext对象包含Web应用中所有 Servlet 在 Web 容器中的一些数据信息。ServletContext随着Web应用的启动而创建,随着 Web 应用的关闭而销毁。一个 Web 应用只有一个ServletContext 对象。
ServletContext中不仅包含了 web.xml 文件中的配置信息,还包含了当前应用中所有Servlet可以共享的数据。可以这么说, ServeltContext 可以代表整个应用,所以ServletContext有另外一个名称:application。
1. 获取Web应用程序的初始化参数
在web.xml文件中,不仅可以配置Servlet的初始化信息,还可以配置整个Web应用的初始化信息。
配置web.xml文件
<context-param>
<param-name>companyName</param-name>
<param-value>csdn</param-value>
</context-param>
<context-param>
<param-name>address</param-name>
<param-value>beijing</param-value>
</context-param>
<servlet>
<description></description>
<display-name>TestServlet03</display-name>
<servlet-name>TestServlet03</servlet-name>
<servlet-class>servletpractice.TestServlet03</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>TestServlet03</servlet-name>
<url-pattern>/TestServlet03</url-pattern>
</servlet-mapping>
创建Servlet类TestServlet03
注:Enumeration接口中定义了一些方法,通过这些方法可以枚举(一次获得一个)对象集合中的元素。
这种传统接口已被迭代器取代,虽然Enumeration 还未被遗弃,但在现代代码中已经被很少使用了。尽管如此,它还是使用在诸如Vector和Properties这些传统类所定义的方法中,除此之外,还用在一些API类,并且在应用程序中也广泛被使用
public class TestServlet03 extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
* response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// TODO Auto-generated method stub
/*
* response.setContentType(MIME)的作用是使客户端浏览器,区分不同种类的数据,
* 并根据不同的MIME调用浏览器内不同的程序嵌入模块来处理相应的数据。
* 例如web浏览器就是通过MIME类型来判断文件是GIF图片。通过MIME类型来处理json字符串。
*/
response.setContentType("text/html;charset=utf-8");
/*
* response.getWriter()返回的是PrintWriter,这是一个打印输出流。
* response.getWriter().print(),不仅可以打印输出文本格式的(包括html标签),
* 还可以将一个对象以默认的编码方式转换为二进制字节输出
*/
PrintWriter out = response.getWriter();
// 得到ServletContext对象
ServletContext context = this.getServletContext();
// 得到包含所有初始化参数名的Enumeration对象
Enumeration<String> paramNames =context.getInitParameterNames();
out.println("all the paramNames and paramValue are following:<br>");
// 遍历所有的初始化参数名,得到相应的参数值并打印
while (paramNames.hasMoreElements()) {
String name = paramNames.nextElement();
String value = context.getInitParameter(name);
out.println(name + ": " + value);
out.println("<br />");
}
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
* response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
//浏览器测试网址 http://localhost:8080/chapter03/TestServlet03
}
运行结果: