菜鸟学习JSP之第9章-过滤器的初体验
1、什么是Filter?
依据字面上的中文意思为过滤器。
☆Filter的作用
当用户的请求到达指定的URL之前,可以借助Filter来改变这些请求的内容;同样地,当响应结果到达客户端之前,可以使用Filter修改输出的内容。
什么是FilterChain(过滤器链)?
一个FilterChain包含多个Filter。
2、过滤器的工作原理
3、过滤器的声明周期:

4、过滤器的应用场合
·加载:对于到达系统的所有请求,过滤器收集诸如浏览器类型,一天中的时间等相关信息,并对它们进行日志记录
·性能:过滤器在内容通过线路传来并在到达Servlet和JSP页面之前解压缩该内容,然后再取得响应内容,并在响应内容发送到客户机器之前将它转换为压缩格式
·安全:过滤器处理身份验证令牌的管理,并适当地限制安全资源的访问,提示用户进行身份验证或将它们指引到第三方进行身份验证.
·会话管理:将Servlet和JSP页面与会话处理代码混杂在一起可能带来相当大的麻烦.使用过滤器来管理会话可以让WEB页面集中精力考虑内容显示和委托处理,而不必担心会话管理的细节.
5、Filter接口
过滤器是一个对象,它根据用户的请求和资源的响应进行过滤.
包含的方法:
| 接口 | 包含的方法 |
|---|---|
| Filter接口 | Init(FilterConfig) |
| doFilter(ServletRequest,ServletRespone, | |
| destory() |
6、使用
新建一个类,需要实现filter接口
public class Filter implements javax.servlet.Filter{public void destroy{System.out.println("销毁");}public void doFilter(ServletRequest req,ServletResponse res,FilterChain chain)throws IOException,ServletException{System.out.println("----处理请求之前----");chain.doFilter(req,res);System.out.println("----处理请求之后----");}public void init(FilterConfig fig)throws ServletException{System.out.println("----初始化----");}}
然后配置xml---->
first servlet.Filter
first /*
然后访问项目,发送任意一个请求,均能在控制台看到如下:

经典例子:统一文字编码、用户登录验证、记录日志功能等。
☆☆☆ 设置字符:
public void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) throws IOException, ServletException {
//设置请求字符集
request.setCharacterEncoding("GBK");
//请求向下传递
chain.doFilter(request, response);
}
7、过滤器链
一个过滤器链(FilterChain),在请求到达请求资源前会依次经过链中的所有过滤器,
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

