Servlet JSP 二重修炼:Filter过滤器
来源:互联网 发布:哪些网游国服有mac版 编辑:程序博客网 时间:2024/06/06 06:35
原网站:http://www.cnblogs.com/Alandre/p/4090491.html
摘要: 原创出处: http://www.cnblogs.com/Alandre/ 泥沙砖瓦浆木匠 希望转载,保留摘要,谢谢!
真正的朋友就是,当你蒙蔽了所有人的眼睛,也能看穿你真实的样子和心底的痛楚。
前言
好久没写博客了。哈哈~宝刀未老呀,操起笔来准备11.11华华丽丽的来一篇。都说温故知新,这句话绝对正确。按着人的记忆曲线,温故是巩固记忆力的好办法。就像我还是经常翻翻自己写的博客。回头来看看到的是新的东西。那就足够了。
从右到左:人生境界也
过滤器
其实拦截器我在 posted @ 2014-03-20 12:45 写过一篇:《⑧javaWeb之在例子中学习(过滤器Filter)》。会过头来看,发现里面讲的不太细粒。但是其中两个应用小例子是挺不错了。如果喜欢看例子的可以去看看。
什么是过滤器呢?
其实过滤器(Filter)和Servlet很相似,都是java的组件。即请求发送servlet之前,可以用其截获和处理请求,也可以在serlvet结束工作之后,在响应发回之前处理响应。因此,和上篇一样,过滤器filter是拦截请求,并对传给请求资源的ServletRequest 或 ServletResponse 进行处理的一个对象。如图:简单的描述其工作原理
过滤器做的事情
这是我们最希望做看到的事情,其实Filter可以当成一个插件组件。它的作用于request和response之间。
请求过滤器的作用:
- 完成安全检查
- 重新格式化请求首部或者体
- 建立请求审计和日志
响应过滤器的作用:
- 压缩相应流
- 追加或者修改流
- 创建一个完全不同的响应
案例代码解释
Servlet API中提供了一个Filter接口,开发应用时,如果编写的Java类实现了这个接口,则把这个java类称之为过滤器Filter。Filter的实现类实现了一个J2EE的过滤器,过滤器的api允许访问ServletCOntext,同样可以链接到另一个Filter。
Filter类似于Servlet一个样,有一个生命周期。里面有:init(), destroy(),还有个核心方法:doFilter()。
- init(FilterConfig):这是Filter的初始化方法,Servlet容器创建Filter实例后将调用这个方法。在这个方法中可以读取web.xml文件中Filter的初始化参数
- doFilter(ServletRequest,ServletResponse,FilterChain): 这个方法完成实际的过滤操作,当客户请求访问于Filter关联的URL时,Servlet容器将先调用Filter的doFilter方法。FilterChain参数用于访问后续Filters
- destroy(): Servlet容器在销毁Filter实例前调用该方法,这个方法中可以释放Filter占用的资源
过滤器执行机制图:
此我们实现这个接口:
doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
大家主要看看这个参数:ServletRequest /ServletResponse 。这个方法不取HTTP请求和相应对象做参数,而只是常规的ServletRequest /ServletResponse 对象。这里是对通用性的设计,过滤器的设计的要通用,如果过滤器用于一个非web应用,所以实现非Http接口。但不用担心的是,ServletResponse 是HttpServletResponse的超类。
Filter的设计
从Filter执行机制图,我们可以体会到其设计很像一个东西---”栈“。可以从我书中摘录的一张图片体会:Filter3→Filter7→SerlvetA→Filter7→Filter3
后记
重读Filter的积累。
如以上文章或链接对你有帮助的话,别忘了在文章按钮或到页面右下角点击 “赞一个” 按钮哦。你也可以点击页面右边“分享”悬浮按钮哦,让更多的人阅读这篇文章
下面是pdf,要下载的请打开(http://files.cnblogs.com/Alandre/fiklter.pdf)
- Servlet JSP 二重修炼:Filter过滤器
- servlet和JSP过滤器Filter
- servlet和JSP过滤器Filter
- servlet和JSP过滤器Filter
- servlet和JSP过滤器Filter
- Servlet和JSP过滤器Filter
- servlet和JSP过滤器Filter
- servlet和JSP过滤器Filter
- servlet和JSP过滤器Filter
- Jsp Servlet配置过滤器Filter
- servlet和JSP过滤器Filter(全)
- jsp servlet中的过滤器Filter配置总结
- servlet和JSP过滤器Filter(转载)
- Servlet和JSP页面过滤器Filter介绍
- jsp/servlet中的过滤器Filter配置总结
- jsp servlet中的过滤器Filter配置总结
- jsp servlet中的过滤器Filter配置总结
- jsp servlet中的过滤器Filter配置总结
- HDU 5095 Linearization of the kernel functions in SVM(模拟, 水题)
- js 遍历 object 属性和值的方法
- 第11周 项目6-5 输出1000以内的所有回文数
- 数据结构与算法学习之路:二分查找的非递归和递归算法
- HDU 5090 Game with Pearls(贪心, 二部图最大匹配)
- Servlet JSP 二重修炼:Filter过滤器
- CC2540 DMA学习
- 设计模式原则详解
- 在处理URL时对中文的转码过程
- win7 java环境变量设置
- ubuntu 12.04 samba
- Yacc 与 Lex 快速入门(词法分析和语法分析)
- 教你怎么去一个APP的JSON数据,你懂的
- Linux-0.11内核源码分析系列:内存管理get_free_page()函数分析