过滤器提供了资源请求和相应的过滤器功能,可以放置在web.xml文件中。
过滤器可以用于实现以下功能
1 .权限过滤
2 .登录和检查验证
3 .图像转换
4 .数据压缩
5 .加密
6 .令牌验证
7 .触发资源访问的事件
8. XSL/T滤波
9 .最小类型通道过滤
filter服务加载到web容器中时,首先调用init函数,并且只调用一次。 如果调用init函数失败,则过滤器将不起作用。 参数FilterConfig对象包含web.xml中过滤器的设置参数。
过滤功能用doFilter函数实现,包含ServletContext参数。 每次请求或响应通过过滤器链时都会调用doFilter函数,而FilterChain.doFilter则用于调用以下过滤器的doFilter方法:
此函数可以执行以下操作:
检查请求
2 .替换请求内容或请求头信息
3 .更换响应内容或响应头信息
destroy方法由web容器调用,表示正在退出服务过滤器。 此方法只调用一次。 也就是说,在过滤器的doFilter方法中的所有线程都结束之后,或者在超时时间过去之后。
Web容器调用此方法后,将不再调用此过滤器的doFilter方法。
此方法允许过滤器清理占用资源(如内存、文件和线程),并确保永久状态与内存中过滤器的当前状态同步。
Example :
web.xml
1
2战斗1
3 com.filter.MyFilter
4
5
6战斗1
7 /*
8
9
10
11过滤器2
12 com.filter.MyFilter
13
14
15过滤器2
16 /*
17
在web.xml文件中放置两个过滤器filter1和filter2,以阻止所有请求
MyFilter.java
1 publicclassfilteroneimplementsfilter {2}
3//战斗机链的执行
4 publicvoiddofilter (servletrequestarg 0,ServletResponse arg1,FilterChain arg2)5 throwsIOException,ServletException {6 //
7 system.out.println (filteronebefore ); 8
9 //下一个过滤器;或
10 arg2. do过滤器(arg1,arg1); 11
12 //响应的过滤
13 system.out.println (filteroneafter ); (十五)十五
16 //初始化过滤器
17公共void init (filter configarg0) throwsservletexception (18系统. out.println (filteroneinit ) ); (20 ) 20
21 //释放过滤器使用的资源
22公共语音目录((23 system.out.println ) ) filteronedestroy ); 24 ) 25
26 }
输出:
过滤器one before
过滤器待办事项
过滤器前锋
过滤器one after