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

Dea*_*mer 13 java servlets servlet-filters

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

Boz*_*zho 26

不,servlet和过滤器:

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


Tua*_*uan 9

到目前为止,我也想知道这些差异.我创建了一个Web项目来观察它们的生命周期.它可以检查

http://dntuan-java-workspace.googlecode.com/svn/trunk/simple-web
Run Code Online (Sandbox Code Playgroud)

在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)方法.