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

时间:2010-09-24 10:24:30

标签: java servlets servlet-filters

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

2 个答案:

答案 0 :(得分:26)

不,servlet和过滤器:

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

答案 1 :(得分:9)

到目前为止,我还想知道这些差异。我创建了一个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)方法。