所谓装饰者模式(decorator
-pattern)动态的给对象添加职责。装饰者较被装饰者拥有更多的功能,且除本身的功能外还可以调用被装饰者的功能。
比较常见的例子是Java I/O 装饰者:
其中,各类的作用如下:
FileInputStream 作为被装饰者 提供了读取文件的基本操作
BufferedInputStream 作为装饰者,加入了额外两个功能:1 缓冲功能(改进读入大文件的性能)
2 用readLine()方法(read one line per time)增强了读入的速率
LineNumberInputStream 也是个装饰者,通过名字我们能看出其增加了计算Line
Number 的
function。
好了 ,有了对装饰者模式的初步认识了,Let’s
go to the theme:
What is the Filter ?
Basely Filter is a
java component which used to :
1 Intercept the request coming from Client and process
2 intercept the response before arriving at Client
容器根据DD中的配置来判断Filter的invoke
order 及请求的URL来具体要调用Filter。
下面是一段过滤器的配置例子:
<filter>
<filter-name>FilterRequest</filter-name>
<filter-class>com.example.web.FilterRequest</filter-class>
<init-param>
<param-name>name<param-name/>
<param-value>Bruce</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name> FilterRequest
</filter-name>
<url-pattern>/filter/*.do</url-pattern>
</filter-mapping>
过滤器还可以针对具体的servlet (假设已有FilterServlet的servlet)
<filter-mapping>
<filter-name> FilterRequest
</filter-name>
<servlet-name>FilterServlet</servlet-name>
</filter-mapping>
过滤器类要实现位于javax.servlet 内的Filter类,像servlet一样过滤器也有生命周期:
init() : 初始化
doFilter() : 处理过滤操作
destroy() : 删除Filter实例
看下doFilter(ServletRequest req, ServletResponse resp,
FilterChain)方法
具体代码不说了,方法内利用FilterChain.doFilter(req,resp) 来完成过滤器的内联和回调。
ServletRequest 请求处理可以在该方法调用之前进行处理,那ServletResponse的处理呢?是否是在该方法调用后处理呢?
其实在在FilterChain.doFilter(req,resp)回调后 ServletResponse 已经返回客户端,再次处理已经没有意义。
此处的处理用到了装饰者类:
在FilterChain.doFilter(req,resp)方法执行之前 将 ServletResponse 类进行包装:
CompressionResponseWrapper
wrapperResp = new CompressionResponseWrapper(response);
CompressionResponseWrapper 是一个包装类 ,封装了对于response的操作
只有调用FilterChain.doFilter(req, wrapperResp)
可以参照下图:
- 大小: 23.5 KB
- 大小: 27.7 KB
分享到:
相关推荐
Servlet过滤器的简单使用,实现一个登陆界面。代码和博文几乎一致。
servlet 过滤器做的简单登陆demo 初学者的简单例子。
这是Servlet过滤器的初始化方法,Servlet容器创建Servlet过滤器实例后将调用这个方法。在这个方法中可以读取web.xml文件中Servlet过滤器的初始化参数。 b、doFilter(ServletRequest,ServletResponse,FilterChain)...
servlet过滤器实例经典过滤器,手把手交你配置过滤器,五大常用过滤器源码,走过路过的同事们注意了!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
java-web servlet 拦截器 过滤器使用 java-web servlet 拦截器 过滤器使用
比较好也比较常见的方法是用专门的servlet过滤器进行过滤。java中有个Filter类专门从事这类工作,下面以一个简单的实例进行演示: 实例说明:假设有一个web应用软件,如果是正常途径登录,我们会在其session中放入...
servlet过滤器详解
简单的实现了一个Servlet过滤器,并配有文档按步骤教你怎么做
servlet,filter,过滤器技术servlet,filter,过滤器技术
第13章使用Servlet过滤器和监听器,基础知识
servlet过滤器和监听器,servlet过滤器和监听器课件,servlet过滤器和监听器PPT
jsp+servlet登录验证过滤器jsp+servlet登录验证过滤器jsp+servlet登录验证过滤器
servlet过滤器配置及运行过程,servlet实例用法。
使用过滤器处理中文问题 当用户登陆页面输入帐号时,如果输入是中文,后台servlet再次输出这个内容时,可能就会是乱码,这是因为serlvet中默认是以ISO-8859-1格式编码的,如果后台有多个Servlet,多个参数,这样就...
Servlet过滤器的使用.doc Servlet过滤器的使用.doc
java中servlet文字过滤器,取出一下页面上的乱码。我就就要用到servlet这个过滤器。
用过滤器来验证用户是否登录
Servlet3.0使用注解标注过滤器 Servlet3.0使用注解标注过滤器
一个超帅的jsp过滤器 ,对登录进行验证
Servlet过滤器大全