如何编写自定义servlet上下文init方法

时间:2012-07-05 05:14:14

标签: servlets

我希望在servlet上下文初始化阶段使用servletContext.setAttributes设置一些应用程序范围的变量。如何实现这一点。

2 个答案:

答案 0 :(得分:1)

实施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

   }
}

答案 1 :(得分:1)

如果您希望将逻辑绑定到servlet(而不是使用侦听器),则可以覆盖servlet 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)。请参阅docs