Filter

Filter可以看作是Servlet的一种“加强版”,主要用于对用户请求进行预处理,也可以对HttpServletResponse进行后处理,是个典型的处理链。

使用Filter的完整流程:
Filter对用户请求进行预处理,接着将请求交给Servlet进行处理并生成响应,最后Filter再对服务器响应进行后处理。(可以修改HttpServletRequest和HttpServletResponse的头和数据)

Filter的分类
1、用户授权的Filter:负责检查用户请求,根据请求过滤用户非法请求
2、日志Filter:详细记录某些特殊的用户请求
3、负责解码的Filter:包括对非标准编码的请求解码
4、能改变XML内容的XSLT Filter等

Filter可负责拦截多个请求或相应;一个请求或相应也可被多个Filter拦截

创建Filter
1.创建Filter处理类;
2.配置Filter:
2.1web.xml文件中配置Filter;
2.2@WebFilter(filterName=”…”,urlPatterns={“/*”})
配置Filter名;配置Filter拦截URL模式。

实现javax.servlet.Filter接口,三个方法:
1.void init(FilterConfig config):用于完成Filter的初始化;
2.void destroy():用于Filter销毁前,完成某些资源的回收;
3.void doFilter(ServletRequest request,ServletResponse response,FilterChain chain):实现过滤功能,该方法就是对每个请求及响应的额外处理。

实际上,Filter和Servlet极其相似,区别只是Filter的doFilter()方法里多了一个FilterChain参数,通过这个参数可以控制是否放行用于请求。在实际项目中,Filter里doFilter()方法里的代码就是从多个Servlet的service()方法里抽取的通用代码,通过使用Filter可以实现更好的代码复用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值