ServletContextListener-contextDestroyed中是否需要ServletContext-removeAttribute

时间:2013-11-27 15:15:12

标签: java servlets

我在ServletContextListener实现中看到了很多开发人员编码的源代码(例子)

    public class ServletContextListenerImpl implements ServletContextListener {

    @Override
public void contextInitialized(ServletContextEvent sce) {
    sce.getServletContext().setAttribute("attribute1", new Bean1());
}

@Override
public void contextDestroyed(ServletContextEvent sce) {
    sce.getServletContext().removeAttribute("attribute1");  //--- LINE_REMOVE
}

我的问题是我们是否真的需要在上面的示例中标记“LINE_REMOVE”?

我认为我们不需要它,因为当contextDestroyed执行时,servletContext即将完全销毁,所以它的属性也将被删除。

感谢您的想法。

2 个答案:

答案 0 :(得分:4)

虽然通常不需要,但您正在查看的代码也可能有一个自定义ServletContextAttributeListener,它会侦听这些上下文属性的删除并相应地执行某些操作。

答案 1 :(得分:0)

销毁ServletContext后无需删除属性。但是,如果您想收听属性删除事件,可以使用ServletContextAttributeListener