原网站:http://www.cnblogs.com/Alandre/p/4090491.html html
摘要: 原创出处: http://www.cnblogs.com/Alandre/ 泥沙砖瓦浆木匠 但愿转载,保留摘要,谢谢! java
很久没写博客了。哈哈~宝刀未老呀,操起笔来准备11.11华华丽丽的来一篇。都说温故知新,这句话绝对正确。按着人的记忆曲线,温故是巩固记忆力的好办法。就像我仍是常常翻翻本身写的博客。回头来看看到的是新的东西。那就足够了。 web
从右到左:人生境界也 api
其实拦截器我在 posted @ 2014-03-20 12:45 写过一篇:《⑧javaWeb之在例子中学习(过滤器Filter)》。会过头来看,发现里面讲的不太细粒。可是其中两个应用小例子是挺不错了。若是喜欢看例子的能够去看看。 安全
什么是过滤器呢? ide
其实过滤器(Filter)和Servlet很类似,都是java的组件。即请求发送servlet以前,能够用其截获和处理请求,也能够在serlvet结束工做以后,在响应发回以前处理响应。所以,和上篇同样,过滤器filter是拦截请求,并对传给请求资源的ServletRequest 或 ServletResponse 进行处理的一个对象。如图:简单的描述其工做原理 post
过滤器作的事情 学习
这是咱们最但愿作看到的事情,其实Filter能够当成一个插件组件。它的做用于request和response之间。 网站
请求过滤器的做用: spa
响应过滤器的做用:
Servlet API中提供了一个Filter接口,开发应用时,若是编写的Java类实现了这个接口,则把这个java类称之为过滤器Filter。Filter的实现类实现了一个J2EE的过滤器,过滤器的api容许访问ServletCOntext,一样能够连接到另外一个Filter。
Filter相似于Servlet一个样,有一个生命周期。里面有:init(), destroy(),还有个核心方法:doFilter()。
过滤器执行机制图:
此咱们实现这个接口:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
public class DemoFilterimplements Filter
{
@Override
public void init(FilterConfig filterConfig)throws ServletException
{
}
@Override
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain)throws IOException, ServletException
{
chain.doFilter(request, response);
}
@Override
public void destroy()
{
//完成清理工做
}
}
|
doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
你们主要看看这个参数:ServletRequest /ServletResponse 。这个方法不取HTTP请求和相应对象作参数,而只是常规的ServletRequest /ServletResponse 对象。这里是对通用性的设计,过滤器的设计的要通用,若是过滤器用于一个非web应用,因此实现非Http接口。但不用担忧的是,ServletResponse 是HttpServletResponse的超类。
从Filter执行机制图,咱们能够体会到其设计很像一个东西---”栈“。能够从我书中摘录的一张图片体会:Filter3→Filter7→SerlvetA→Filter7→Filter3
重读Filter的积累。
如以上文章或连接对你有帮助的话,别忘了在文章按钮或到页面右下角点击 “赞一个” 按钮哦。你也能够点击页面右边“分享”悬浮按钮哦,让更多的人阅读这篇文章
下面是pdf,要下载的请打开(http://files.cnblogs.com/Alandre/fiklter.pdf)