本文介绍 怎么在Servlet Web应用 中 初始化 全局变量(ServletContext)
ServletContext 也就是 java Servlet Web应用 里面的全局变量,当我们有时要做一些初始化配置是通常也是存在ServletContext里面
怎么初始化呢?有2个办法,一是监听器(listener)来初始化,二是通过设置servlet的load-on-startup=1,让servlert在web应用在启动时就加载这servlert来实现
我们这里主要讲第一个,也就是通过监听器(listener)来实现
首先我们要准备一个实现了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) {
//实现
}
}
接下来在web.xml里面配置监听器的配置,在web.xml添加以下配置
<listener>
<listener-class>listener.ContextLoaderListener</listener-class>
</listener>
接下来你就可以在 servlet中取到 全局变量里面test变量的值,代码如下
public class HelloOut 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();
}
}
PS:扩展,你还可以在listener实现一个计数器,每次运行contextInitialized方法计数+1,然后存到全局变量里去,在servlet中查看计数的值,你就验证contextInitialized 这个方法是否只运行了一次
下一篇文章是在servlet中使用EhCache