过滤Filter的使用1

过滤器

改下路径

过滤Filter的使用1

过滤Filter的使用1
过滤Filter的使用1
过滤Filter的使用1
过滤Filter的使用1

过滤Filter的使用1
过滤Filter的使用1
如果有多个Servlet的提交
过滤Filter的使用1
过滤Filter的使用1
过滤Filter的使用1
过滤Filter的使用1
过滤Filter的使用1
每一个Servlet都写重复的代码,在重复的位置写重复的代码,需要优化代码
使用过滤的思想,把请求过滤出来。在请求和服务端之间加一个过滤器,请求先进入过滤器,再发到服务端。

过滤器功能

1.用来拦截传入的请求和传出的响应
2.修改或以某种方式处理正在客户端和服务端之间交换的数据流
如何使用
与使用Servlet类似,Filter是java Web提供的一个接口,开发者只需要自定义一个类并且实现该接口即可
过滤Filter的使用1
过滤Filter的使用1
里面有三个方法,可以只实现doFilter,或者实现两个,但是doFilter必须实现,不会报错,但是servler中的5个方法必须都实现,不然会报错
如果接口里面的方法用关键字default修饰,那么可以不用去实现(jdk1.8新特性)
init和destroy都有花括号,说明有函数实现,是一个完整的方法
之前说的接口方法不能有实现,只适用jdk1.8之前的版本,jdk1.8出来后接口方法有实现
过滤Filter的使用1

Filter配置

要将请求和Filter映射起来
与servlet一样,可以去web.xml里面去配
过滤Filter的使用1
这样就表明login请求,后端有两个组件去映射,一个是CharacterFilter,一个是servlet,先后顺序是filter先
过滤Filter的使用1
让请求往下走,调用filterChain.doFilter,不然请求到过滤器就断掉了
把设置字符编码去掉,看看会不会乱码
过滤Filter的使用1
发现没有乱码
过滤Filter的使用1

把test配进来
过滤Filter的使用1
注意:doFilter方法中处理完业务逻辑之后,必须添加filterChain.doFilter(servlerRequest,servletResponse);
否则请求/响应无法向后传递,一直停留在过滤器中。