【问题标题】:Extend HttpServlet implement ServletContextListener扩展 HttpServlet 实现 ServletContextListener
【发布时间】:2011-09-29 07:47:49
【问题描述】:

类扩展HttpServlet并实现ServletContextListener是一种好习惯吗?

public Myclass extends HttpServlet implements ServletcontextListener {
}

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

【问题讨论】:

    标签: servlets servletcontextlistener


    【解决方案1】:

    一些想法:

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-07-16
        • 1970-01-01
        • 2018-03-14
        • 2011-10-16
        • 1970-01-01
        • 1970-01-01
        • 2010-09-15
        • 1970-01-01
        相关资源
        最近更新 更多