java web Servlet 使用 Application/ServletContext

本文介绍 怎么在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

你可能感兴趣的:(java,servlet,application,servletContext)