如何编写自定义 servlet 上下文初始化方法



我希望在servlet上下文初始化阶段使用servletContext.setAttributes设置一些应用程序范围的变量。我怎样才能做到这一点。

实现javax.servlet.SevletContextListener,它在初始化javax.servlet.ServletContext时获得回调。

下面是示例:

public class MyServletContextListener implements ServletContextListener
{
   public void contextInitialized(ServletContextEvent sce)
   {
       ServletContext sc = sce.getServletContext();
       //do your initialization here.
       sc.setAttribute(.....);
   }
   public void contextDestroyed(ServletContextEvent sce)
   {
       ServletContext sc = sce.getServletContext();
       //do your cleanup here
   }
}

如果你想把你的逻辑更接近servlet(而不是使用侦听器),你可以重写servlets init方法。这样:

@Override
public void init() throws ServletException {
    ServletContext sc = getServletContext();
    // Store our attribute(s)!
    // Check first to make sure it hasn't already been set by another Servlet instance.
    if (sc.getAttribute("key") == null)
        sc.setAttribute("key", "value");
}

而且您不必打电话给super.init(config).请参阅文档。

最新更新