ServletContext 相当于是servlet中的一个容器,其保存着servlet中的一些全局变量,范围比application的范围还是要大,举例来说就是可以初始化一个变量,可以是对象,将其放入ServletContext 中,然后在servlet中可以取出,不受范围限制。
怎么初始化呢?
定义类ContextLoaderListener 实现ServletContextListener接口,
public class ContextLoaderListener implements ServletContextListener{
//实现全局上下文初始化方法
@Override
public void contextInitialized(ServletContextEvent servletContextEvent) {
//获得全局变量
ServletContext servletContext = servletContextEvent.getServletContext();
//设置全局变量属性
servletContext.setAttribute("test","test1");
}
//实现全局上下文销毁函数
@Override
public void contextDestroyed(ServletContextEvent servletContextEvent) {
//实现
}
}
里面有两个函数,分别定义了初始化和销毁时候执行的函数,在初始化中将属性设定,在其他地方取得ServletContext后就可以去除值了。
记得下面web.xml:
<listener>
<listener-class>listener.ContextLoaderListener</listener-class>
</listener>
取出:
public class Hello extends HttpServlet {
public void service(HttpServletRequest request,HttpServletResponse response) throws IOException {
PrintWriter writer = response.getWriter();
writer.println("Hello Word For Test");
//获取全局变量
ServletContext servletContext = getServletContext();
//输出test变量
writer.println(servletContext.getAttribute("test"));
writer.close();
}
}
ServletContextListener一直在监视着ServletContext的变化,所以也可以明白ServletContextListener的含义了吧!