filter是Servlet规范里的一个高等特性,只用于对request、response的进行修正。

filter提出了FilterChain的观点,客户端要求request在抵达servlet之前都会经由filterChain里的所有fiter,如图所示:

二、filter的生命周期

jspfilter权限java的Filter一种aop编程思惟的表现 Node.js

在web.xml中配置filter,当启动做事器时会实例化,并且会初始化,当有网络要求时会进行过滤操作,当 做事器关闭时,会进行销毁,全过程如下图所示:

三、编写第一个filter

filter类需实现fiter接口,需复写里面的三个方法,个中init(),在初始化时调用;doFiler()方法每次都会调用,在这个方法中一定要实行chain.doFilter(),否则request不会交给后面的filter或者servler;ondestroy()在关闭做事器时调用。

配置filter:

个中,url_pattern可以配置多个,也可以用通配符,当访问知足路径匹配,并且符合dispatcher时,request会被filter拦截进行处理,处理完后的response再次被filter拦截,可以进行处理。

个中dispatcher 默认REQUEST,四种不同的dispatcher:

REQUEST:要求时有效

FORWARD:当某servlet通过forward到该servlet才有效

INCLUDE: jsp通过< jsp: incluser/> 要求servlet有效

ERROR: < %@page errorPage=\"大众\"大众 % >有效

四、防盗链

filter的特性使它可以处理分外的事情,例如防盗链,字符编码的处理,日志记录,数据加密,过滤一些黑词等等。

例如: 防盗链图片,当其他网站要求本网站图片资源时显示缺点的图片,只有本运用师长西席的图片才显示精确的图片,代码如下:

在web.xml中配置:

当访问images下的所有图片会经由该filter,根据访问头信息,如果说本站点的访问则显示精确图片,否则师长西席缺点图片。

五、字符编码

直接上代码:

在web.xml中配置:

个中页面编码办法也必须同等,希望全部用utf-8,其余须要配置Tomcat的/config/server.xml编码:

其余,还有比较常见的日志记录filter、非常捕捉filter、权限校验、内容更换filter等等。

filter有很大的弹性机制,功能强大,而且跟servlet、jsp没耦合.filter是现在面向切面编程aop的一种思想表示,它能够胜任很多事情。

2.5的fiter须要在web.xml中配置,实行顺序按照配置顺序,其余3.0可以用表明的办法配置filter,此时没有配置的顺序。