Servlet 生命周期和过滤器生命周期之间的差异

2022-09-03 09:31:11

Servlet 和过滤器生命周期之间有什么区别吗?


答案 1

否,servlet 和 filter:

  • 在上下文启动时实例化(一次)
  • 该方法称为init(..)
  • 他们处理每个请求 - 首先它通过所有过滤器,然后到达servlet
  • 当上下文被销毁时(即,当您的容器停止,或者您的应用程序从管理器控制台取消部署时),将调用该方法destroy(..)

答案 2

到目前为止,我也想知道其中的差异。我创建了一个Web项目来观察它们的生命周期。可以在

http://dntuan-java-workspace.googlecode.com/svn/trunk/simple-web

在 tomcat 上部署后,您可以从控制台观察日志,以查看在启动上下文之前是否初始化了筛选器。而 servlet 仅在发出请求时才初始化(例如http://localhost:8080/simple-web/servlet/life.jsp)


来自 JSR-000315 JavaTM Servlet 3.0 的更多信息

2.3.1 加载和实例化

servlet 容器负责加载和实例化 servlet。加载和实例化可以在容器启动时发生,也可以延迟到容器确定需要 servlet 来为请求提供服务。

6.2.1 过滤器生命周期

部署 Web 应用程序后,在请求导致容器访问 Web 资源之前,容器必须找到必须应用于 Web 资源的筛选器列表,如下所述。容器必须确保它已为列表中的每个筛选器实例化了相应类的筛选器,并调用其 init(FilterConfig config) 方法。


推荐