servlet生命周期和filter生命周期之间的差异
servlet和filter生命周期之间有什么区别吗?
不,servlet和filter:
- 在上下文开始时被实例化(一次)
- 调用
init(..)
方法 - 他们处理每个请求 – 首先它通过所有filter,然后到达servlet
- 当上下文被销毁时(即当您的容器停止,或者您的应用程序从管理器控制台取消部署时),将调用
destroy(..)
方法
到目前为止,我也想知道这些差异。 我创建了一个Web项目来观察它们的生命周期。 它可以检查
http://dntuan-java-workspace.googlecode.com/svn/trunk/simple-web
在tomcat上部署之后,您可以从控制台观察日志,以查看在上下文启动之前初始化filter。 而servlet仅在发出请求时被初始化(例如http://localhost:8080/simple-web/servlet/life.jsp
)
来自JSR-000315 JavaTM Servlet 3.0的 更多信息 :
2.3.1加载和实例化
servlet容器负责加载和实例化servlet。 加载和实例化可以在容器启动时发生,也可以延迟,直到容器确定需要servlet来处理请求。
6.2.1filter生命周期
部署Web应用程序之后,在请求导致容器访问Web资源之前,容器必须找到必须应用于Web资源的筛选器列表,如下所述。 容器必须确保它已为列表中的每个filter实例化了相应类的filter,并调用其init(FilterConfig config)方法。