1

HttpServlet扩展和实现一个类是一个好习惯ServletContextListener吗?

public Myclass extends HttpServlet implements ServletcontextListener {
}

这样做有什么好处和坏处?

4

2 回答 2

1

一些想法:

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

这一切都取决于你,实施者。ServletcontextListener有其特定的用途。在使用它之前,请确保您知道它的用途。

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

于 2011-09-29T09:07:53.400 回答