Filter 过滤器
Filter 责任链设计模式构造的.
过滤器实际上就是对web资源进行拦截,做一些处理后再交给下一个过滤器或servlet处理
通常都是用来拦截request进行处理的,也可以对返回的response进行拦截处理
if (满足过滤条件) {
过滤器链 doFiltet(请求,响应);// 绿色
} else {
不调用过滤器链doFilter方法, 自己返回响应的内容;// 红色
}
应用场景
自动登录
统一设置编码格式
访问权限控制
敏感字符过滤等
CharsetFilter实现了Filter接口,实现了3个方法。3个方法的作用已经在注释中写清楚了。
package filter;// 一般默认都在filter包内
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;
@WebFilter(filterName = "CharsetFilter") //这里是拦截的资源
public class CharsetFilter implements Filter {
public void destroy() {
/*销毁时调用*/
}
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
/*过滤方法 主要是对request和response进行一些处理,然后交给下一个过滤器或Servlet处理*/
chain.doFilter(req, resp);//交给下一个过滤器或servlet处理
}
public void init(FilterConfig config) throws ServletException {
/*初始化方法 接收一个FilterConfig类型的参数 该参数是对Filter的一些配置*/
}
}