JavaWeb之filter的使用

filter有什么作用?
filter一般是用来过滤请求的

根据规范建议的各种类型的过滤器:

身份验证过滤器(Authentication Filters)。
数据压缩过滤器(Data compression Filters)。
加密过滤器(Encryption Filters)。
触发资源访问事件过滤器。
图像转换过滤器(Image Conversion Filters)。
日志记录和审核过滤器(Logging and Auditing Filters)。
MIME-TYPE 链过滤器(MIME-TYPE Chain Filters)。
标记化过滤器(Tokenizing Filters)。
XSL/T 过滤器(XSL/T Filters),转换 XML 内容。

/*表示回过滤所有请求
/index.jsp表示会过滤/index.jsp的请求
filter可以用来做权限的检查,合理请求可以通过,不合理请求直接过滤掉

filter会在实际的JSP页面之前接收到请求,可以进行过滤操作,所有叫做过滤器
filter一般是用来过滤请求,服务器响应同样会过滤
filter可以用来做请求的编码转换
filter可以设置多个,像个链条一样串起来

filter的调用顺序是定义在web.xml里的,如果过滤的请求类型相同,那么哪个filter写在前面,哪个filter就先调用:

请求和响应的过滤是一个递归流程:
假设客户端的请求方式是这样:

客户端 ----> filter1 -----> filter2 ------->filter3 -------> 服务器

那么服务器的响应过程就会这样:

客户端 <---- filter1 <----- filter2 <------- filter3<------- 服务器

若以123顺序过滤请求,则必以321顺序过滤响应
一般不对响应做过滤
filter可以设置过滤的类型:
使用xml即可设置过滤的请求类型:

<dispatcher></dispatcher>

REQUEST:当用户直接访问页面时,Web容器将会调用过滤器。如果目标资源是通过RequestDispatcher的include()或forward()方法访问时,那么该过滤器就不会被调用。
INCLUDE:如果目标资源是通过RequestDispatcher的include()方法访问时,那么该过滤器将被调用。除此之外,该过滤器不会被调用。
FORWARD:如果目标资源是通过RequestDispatcher的forward()方法访问时,那么该过滤器将被调用,除此之外,该过滤器不会被调用。
ERROR:如果目标资源是通过声明式异常处理机制调用时,那么该过滤器将被调用。除此之外,过滤器不会被调用。

发布了68 篇原创文章 · 获赞 12 · 访问量 5217

猜你喜欢

转载自blog.csdn.net/qq_40963076/article/details/104429576