![da24a58a1348c6969c9f0314eff80863.png](https://i-blog.csdnimg.cn/blog_migrate/8ebc310fdec4ee4e861889d589928495.jpeg)
第六章 JSP拓展 : 过滤器的简单使用
6.1 过滤器概述
6.1.1 什么是过滤器?
Java中的Filter 并不是一个标准的Servlet ,它不能处理用户请求,也不能对客户端生成响应。 主要用于对HttpServletRequest 进行预处理,也可以对HttpServletResponse 进行后处理,是个典型的 处理链。
优点:过滤链的好处是,执行过程中任何时候都可以打断,只要不执行chain.doFilter()就不会再执行后 面的过滤器和请求的内容。
而在实际使用时,就要特别注意过滤链的执行顺序问题;
![d29b7deb9938ab3bab594bc16677f61c.png](https://i-blog.csdnimg.cn/blog_migrate/18fe4d1585ca08cdb21e92e8dcdcf602.png)
6.1.2 主要作用
在HttpServletRequest 到达Servlet 之前,拦截客户的HttpServletRequest 。
根据需要检查HttpServletRequest ,也可以修改HttpServletRequest 头和据。
在HttpServletResponse 到达客户端之前,拦截HttpServletResponse 。
根据需要检查HttpServletResponse ,可以修改HttpServletResponse 头和数据。
所以我们可以利用过滤器,在我们每次真正处理页面请求之前,设定request的编码这样我们就 不用挨个servlet设置编码了;
6.2 过滤器概述
6.2.1 创建一个过滤器
在项目的util包中点击鼠标右键,选择 "new" > "other"
![3665e2c41a87579eba1972ab342fe5cf.png](https://i-blog.csdnimg.cn/blog_migrate/b1ec65a8015e8554b8ffb98994d36995.jpeg)
在弹出的窗口中 输入 filter,选择Filter 点击 "next"
![d1d54d224fde45a630c1093cf64b7756.png](https://i-blog.csdnimg.cn/blog_migrate/cf364c625964a977b95fe2cc20069cd6.png)
在弹出的页面中输入过滤器名称
![6718a209d331eea2c7d16dc8b0d24594.png](https://i-blog.csdnimg.cn/blog_migrate/f7bb0b95b135d97fb73bcbd66de7234f.jpeg)
输入名称后点击 "Finish" 即可
package com.hnxy.web;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
/**
* Servlet Filter implementation class EncodingFitler
*/
public class EncodingFitler implements Filter {
/**
* Default constructor.
*/
public EncodingFitler() {
// TODO Auto-generated constructor stub
}
/**
* @see Filter#destroy()
*/
public void destroy() {
// TODO Auto-generated method stub
}
/**
* @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain)
*/
public void doFilter(ServletRequest request, ServletRespons