servlet/filter/listener/intercep

2018-02-11  本文已影响32人  jiangmo

概念:

生命周期

servlet

servlet的生命周期始于它被装入web服务器的内存时,并在web服务器终止或重新装入servlet时结束。servlet一旦被装入web服务器,一般不会从web服务器内存中删除,直至web服务器关闭或重新结束。

filter

filter:(一定要实现javax.servlet包的Filter接口的三个方法init()、doFilter()、destroy(),空实现也行)

listener

类似于servlet和filter。

web.xml 的加载顺序是:context- param -> listener -> filter -> servlet
(三者的详细区别及加载机制可以参考另一篇:https://www.jianshu.com/p/612c3a6673b2)

interceptor

以springMVC的拦截器为例,加载了springMVC.xml以后,初始化相应拦截器。当action请求来时调用intercept方法,服务器停止销毁interceptor。

职责

servlet:

创建并返回一个包含基于客户请求性质的动态内容的完整的html页面;
创建可嵌入到现有的html页面中的一部分html页面(html片段);
读取客户端发来的隐藏数据;
读取客户端发来的显示数据;
与其他服务器资源(包括数据库和java的应用程序)进行通信;
通过状态代码和响应头向客户端发送隐藏数据。

filter:

filter能够在一个请求到达servlet之前预处理用户请求,也可以在离开servlet时处理http响应:
在执行servlet之前,首先执行filter程序,并为之做一些预处理工作;
根据程序需要修改请求和响应;
在servlet被调用之后截获servlet的执行

listener:职责如概念。

servlet2.4规范中提供了8个listener接口,可以将其分为三类,分别如下:
第一类:与servletContext有关的listner接口。包括:ServletContextListener、ServletContextAttributeListener
第二类:与HttpSession有关的Listner接口。包括:HttpSessionListner、HttpSessionAttributeListener、HttpSessionBindingListener、 HttpSessionActivationListener;
第三类:与ServletRequest有关的Listener接口,包括:ServletRequestListner、ServletRequestAttributeListener

interceptor:

属于某种扩展servlet的第三方扩展实现(structs、springMVC等)范畴,与过滤器十分相似,通过层层拦截,处理用户的请求和响应,粒度可以更加精确,可以定位到controller。

与filter的主要区别的过滤器和拦截器的区别与联系:

上一篇 下一篇

猜你喜欢

热点阅读