Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Servlets 扩展HttpServlet实现ServletContextListener_Servlets_Servletcontextlistener - Fatal编程技术网

Servlets 扩展HttpServlet实现ServletContextListener

Servlets 扩展HttpServlet实现ServletContextListener,servlets,servletcontextlistener,Servlets,Servletcontextlistener,类扩展HttpServlet并实现ServletContextListener是否是一种好的做法 public Myclass extends HttpServlet implements ServletcontextListener { } 这样做的优点和缺点是什么?这完全取决于您,实施者。有其特殊的目的。使用前请确保您知道它的用途。 如果您正在创建一个HTTP servlet,则必须进行扩展。如果您的类希望“接收有关web应用程序的servlet上下文更改的通知”(从javadocs复制)

类扩展
HttpServlet
并实现
ServletContextListener
是否是一种好的做法

public Myclass extends HttpServlet implements ServletcontextListener {
}

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

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


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

这一切都取决于您,即实现者。有其特殊的目的。使用前请确保您知道它的用途。

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

一些想法:

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

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