扩展HttpServlet实现ServletContextListener

时间:2011-09-29 07:47:49

标签: servlets servletcontextlistener

课程扩展HttpServlet并实施ServletContextListener是一种好习惯吗?

public Myclass extends HttpServlet implements ServletcontextListener {
}

这样做的优点和缺点是什么?

2 个答案:

答案 0 :(得分:1)

一些想法:

  • 您的班级至少会有两个实例。当您的servlet收到传入请求时,容器会创建一个ServletContextListener,至少一个创建HttpServlet
  • 由于2+个实例,您无法使用实例(只是静态)成员来共享数据。
  • 如果其他类不使用您在侦听器中初始化和共享的数据/对象,则会更容易,因为您不必将这些数据/对象放入ServletContextListener中的应用程序范围并检索它们在HttpServlet
  • 如果您的初始化逻辑很复杂,那么将它与servlet代码分开是值得的(例如,将初始化代码放到不同的类中,并使用应用程序范围来获取servlet中的共享对象)。

答案 1 :(得分:0)

这一切都取决于你,实施者。 ServletcontextListener有其特殊目的。使用前请确保知道它是什么。

如果您要创建HTTP Servlet,则必须扩展HttpServlet。如果您的类想要“ 接收有关Web应用程序的servlet上下文更改的通知 ” (从javadocs复制)它是其中的一部分,你必须实现ServletcontextListener。