开门见山
ServletContext 接口是我们第二个要用的接口,ServletContext 也成为 Servlet 上下文,鬼才翻译
ServletContext 代表当前 Servlet 运行环境,是 Servlet 与 Servlet 容器之间直接通信的接口。
Servlet 容器在启动一个 Web 应用时,会为该应用创建一个唯一的 ServletContext 对象供该应用中的所有 Servlet 对象共享,Servlet 对象可以通过 ServletContext 对象来访问容器中的各种资源。
获取 ServletContext 对象有两种方式:
· 通过 ServletConfig 接口的 getServletContext() 方法获得 ServletContext 对象
· 通过 GenericServlet 抽象类的 getServletContext() 方法获得 ServletContext 对象,说白了还是调用 ServletConfig 的 getServletContext() 方法
ServletContext 接口中提供了这几种类型的方法:
· 获取应用范围的初始化参数的方法
· 存取应用范围域属性的方法
· 获取当前 Web 应用信息的方法
· 获取当前容器信息和输出日志的方法
· 获取服务器端文件资源的方法
一、获取应用初始化参数
在上一篇文章中我们也说了,可以通过 web.xml 配置应用范围的初始化参数。
而容器在应用程序加载时会读取这些配置参数,并存入 ServletContext 对象中。这样我们的 ServletContext 就可以获取这些参数
ServletContext 接口获取应用范围的初始化参数的方法:
· getInitParameter(String name) 返回 Web 应用范围内指定的初始化参数值。在 web.xml 中使用 元素表示应用范围内的初始化参数
· getInitParameterNames() 返回一个包含所有初始化参数名称的 Enumeration 对象
Web 应用范围的初始化参数的配置及获取
【代码】web.xml
使用 ServletContext 对象获取初始化参数的值
【代码】ContextInitParamServlet.java
【运行结果】
总结一下,通过 web.xml 来配置应用范围的初始化参数,通过 ServletContext 对象来获取应用初始化参数
机房网真差,凎!
代码如下
【web.xml】
chapter03
webSite
www.itshixun.com
adminEmail
[email protected]
index.html
index.htm
index.jsp
default.html
default.htm
default.jsp
【ContextInitParamServlet.java】
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Enumeration;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
*/
@WebServlet("/ContextInitParamServlet")
public class ContextInitParamServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public ContextInitParamServlet() {
super();
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 设置响应到客户端的 MIME 类型及编码方式
response.setContentType("text/html;charset=UTF-8");
// 使用 ServletContext 对象获取所有初始化参数
Enumeration paramNames = super.getServletContext().getInitParameterNames();
// 使用 ServletContext 对象获取某个初始化参数
String webSite = super.getServletContext().getInitParameter("webSite");
String adminEmail = super.getServletContext().getInitParameter("adminEmail");
// 获取输出流
PrintWriter out = response.getWriter();
// 输出响应结果
out.print("当前 Web 应用的所有初始化参数:");
while(paramNames.hasMoreElements()) {
String name = paramNames.nextElement();
out.print(name + " ");
}
out.println("
webSite 参数的值:" + webSite);
out.println("
adminEmail 参数的值:" + adminEmail + "");
}
}