Servlet过滤器(2)

过滤器API
由容器实现的接口
javax.servlet.Filter
javax.servlet.FilterChain
javax.servlet.FilterConfig
四个包装器类
javax.servlet.ServletRequestWrapper
javax.servlet.ServletResponseWrapper
javax.servlet.http.HttpServletRequestWrapper
javax.servlet.http.HttpServletResponseWrapper

Filter接口
Filter接口是过滤器API的核心
filter

容器仅调用过滤器实例的init()方法一次。在init()方法没有执行完前,容器不会转发任何请求到过滤器

过滤器的生命周期方法 ,过滤器API不提供Filter接口的任何实现 。自定义的过滤器必须明确地实现所有三个方法

doFilter()方法给过滤器对象一个机会来处理请求,转发请求到过滤器链中的下一个组件,或者自己回复客户端

FilterConfig接口
为过滤器提供初始化参数 由Servlet容器实现
这里写图片描述

可以使用ServletContext与Web应用程序的其它组件一起共享application中的属性

配置Filter
< filter >元素
< filter >

< filter-name >ValidatorFilter< / filter-name >
< description>Validates the requests< / description >
< filter-class >com.lovobook.filters.ValidatorFilter< /filter-class >

< init-param >
< param-name>locale< /param-name>
< param-value>USA< /param-value>
< /init-param>

< /filter>

< filter-mapping >元素

< filter-mapping >
< filter-name >ValidatorFilter< /filter-name >
(所有匹配到该URL定义的请求,都要被filter-name中定义的过滤器过滤。)
< url-pattern >*.doc
< /filter-mapping >

< filter-mapping >
< filter-name >ValidatorFilter< /filter-name >
< servlet-name >reportServlet< /servlet-name >
(servlet-name用于定义一个servlet名,所有对该servlet的访问都要被filter-name中定义的过滤器过滤)
< /filter-mapping >

配置过滤器链

用多个过滤器处理在同一个请求
使用多个< filter-mapping >元素配置过滤器链
首先调用匹配请求URI的过滤器 < url-pattern >
再查找用Servlet名匹配请求URI的所有过滤器< servlet-name >
过滤器的顺序按照它们在部署描述文件中出现的顺序排序

< filter-mapping >
< filter-name>FilterA< / filter-name >
< servlet-name>RedServlet< / servlet-name >
< / filter-mapping >

< filter-mapping>
< filter-name>FilterB< / filter-name >
< url-pattern>*.red< / url-pattern >
< /filter-mapping>

< servlet-mapping>
< servlet-name>RedServlet< / servlet-name>
< url-pattern>*.red< / url-pattern>

容器会先调用匹配请求URI的过滤器,然后才是匹配servlet名的过滤器。因此,FilterB始终在FilterA之前调用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值