Filter过滤器
1.简介
Filter也称之为过滤器,它是Servlet技术中最实用的技术,
例如Jsp, Servlet, 静态图片文件或静态 html 文件等进行拦截,从而实现一些特殊的功能。例如实现URL级别的权限访问控制、过滤敏感词汇、解决get和post乱码等一些高级功能。
Servlet API中提供了一个Filter接口,开发web应用时,如果编写的Java类实现了这个接口,则把这个java类称之为过滤器Filter。
2.作用
①可以统一的集中处理请求和响应
②可以实现对请求数据的过滤
3.流程图
那么如何创建Filter呢?
请看图
实现Filter接口
在创建好的类中 实现Filter接口(import javax.servlet.*;包的)
实现方法
public void init(FilterConfig config) throws ServletException {
/初始化方法 接收一个FilterConfig类型的参数 该参数是对Filter的一些配置/
}
public void doFilter(ServletRequest req,ServletResponse resp, FilterChain chain) throws ServletException, IOException {
/*过滤方法 对request和response进行一些处理 chain.doFilter(req, resp);//交给下一个过滤器或servlet处理
}
public void destroy() { /*销毁时调用*/ }
常用配置项
配置需要拦截的资源
以指定资源匹配。例如"/index.jsp"
以目录匹配。例如"/servlet/*"
以后缀名匹配,例如"*.jsp"
通配符,拦截所有web资源。"/*"
过滤器链(ChainFilter)
它可以指向下一个资源,如果还有过滤器,则继续进行下一次的过滤,如果没有过滤器,则会指向资源(servlet)。
注意
过滤器是在服务器启动时就会创建,
也就是说服务器一启动就会执行Filter的init方法.
当Filter被移除或服务器正常关闭时,会执行destroy方法