ServletContext对象
session和cookie,对于每一个请求用户来说,都是不同的,因为要保证隐私安全。
而有一些数据,可以让所有用户共享,此时就可以用ServletContext对象。只要在一个Servlet中设置了ServletContext属性值,那么本项目的中任意一个Servlet中都可以获取到设置的属性值。作用范围是所有Servlet,而有效期是服务器关闭之前。
public class TestServletContext extends HttpServlet { @Override protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // 获取Servlet的三种方式,获取的ServletContext对象是相同的。 //ServletContext context = this.getServletContext(); //context = req.getSession().getServletContext(); //ontext = this.getServletConfig().getServletContext(); ServletContext context = this.getServletContext(); // 设置属性值setAttribute(String name, Object object) context.setAttribute("name", "张三"); // 获取属性值,如果不存在,则返回null String name = (String)context.getAttribute("name"); } }
使用ServletContext来获取web.xml中的配置项
之前讲了可以使用Properties工具类来获取配置文件中的配置项,这里,同样可以使用ServletContext来实现。
不过需要注意的是,ServletContext对象能够读取的配置项需要专门配置:
# 下面创建了两个配置项,分别是name=张三,age=99 <context-param> <param-name>name</param-name> <param-value>张三</param-value> </context-param> <context-param> <param-name>age</param-name> <param-value>99</param-value> </context-param>
使用ServletContext读取配置的实例:
ServletContext context = this.getServletContext(); String name = (String)context.getInitParameter("name"); int age = Integer.parseInt(context.getInitParameter("age")); System.out.println("从web.xml读取到全局配置如下:\n" + "name :" + name + "\t age :" + age);
运行结果如下:
从web.xml读取到全局配置如下: name :张三 age :99