概念:当访问服务器的资源时,过滤器可以将请求拦截下来,完成一些特殊的功能
作用:一般完成通用的操作
1.登录验证
2.设置编码
3.敏感字符过滤
快速入门步骤
1.定义一个类,实现接口Filter
2.复写方法
3.配置拦截路径
方式一:web.xml配置
demo1 cn.itcast.web.filter.FilterDemo1
demo1 /*
方式二:注解配置
@WebFilter("/*")//访问所有资源之前,都会执行该过滤器
public class FilterDemo1 implements Filter {@Overridepublic void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {System.out.println("filter来了....");//放行chain.doFilter(req, resp);System.out.println("filter溜了....");}@Overridepublic void init(FilterConfig config) throws ServletException {}@Overridepublic void destroy() {}
}
过滤器执行流程:
1.执行过滤器(先执行放行前代码)
2.放行(执行放行后的资源)
3.执行放行后面的代码(回来执行过滤器放行代码下面的代码)
过滤器生命周期方法:
1.init方法:
在服务器启动后,会创建Filter对象,然后调用init方法,只执行一次,一般用于加载资源
2.doFilter方法:
每一次请求被拦截的拦截资源时,会执行,执行多次,用于拦截逻辑操作
3.destroy方法:
在服务器关闭后,Filter对象被销毁,如果服务器正常关闭,会执行destroy方法,只执行一次,一般用于释放资源
拦截路径配置:
拦截路径的配置方法有4种:
1.具体的资源路径:/index.jsp,只有访问具体的资源时才会被执行
2.目录拦截: /user/* ,拦截某个目录下的所有资源会被执行
3.后缀名拦截:*.jsp,访问所有后缀名为.yyy的资源会被拦截。注意:前面没有/
4.拦截所有资源:/ * ,所有该服务器下的资源都会被拦截
拦截方式配置:(资源被访问的方式)
1.注解配置:设置dispatcherTypes属性:1.REQUEST 为默认值浏览器直接请求资源2.FORWARD 转发访问资源3.INCLUDE包含访问资源4.ERROR错误跳转资源5.ASYNC异步访问资源2.web.xml配置设置 标签:1.REQUEST 为默认值:浏览器直接请求资源2.FORWARD转发访问资源3.INCLUDE包含访问资源4.ERROR错误跳转资源5.ASYNC异步访问资源
过滤器链:(配置多个过滤器)
执行顺序,如果有两个过滤器1和2
1.过滤器1
2.过滤器2
3.资源执行
4.过滤器2
5.过滤器1
过滤器先后顺序
1.注解配置
按照类名的字符串比较规则比较,值小的先执行
2.web.xml配置
谁定义在上面谁先执行
下一篇:念奴娇花影和小素丹韵