过滤器是JavaWeb三大组件之一,是用来过滤用户请求的

Filter

Filter过滤器是JavaWeb三大组件之一,是用来过滤用户请求的,包括JSP、Servlet和静态资源等,可以实现敏感的字符串过滤、避免中文乱码、权限验证、禁用浏览器缓存、实现自动登录、统计网站访问次数、生成静态页面等。12

实现Filter

实现javax.servlet.Filter接口,重写doFilter方法,init和destroy方法有default实现,按需重写。

Filter配置

过滤器执行顺序:web.xml中配置Filter的先后顺序的,如果放在前面就先执行,放在后面就后执行;注解方式配置,就比较urlPatterns的字符串优先级。

生命周期

FilterConfig

Filter接口中init()方法的参数类型为FilterConfig类型,功能类似ServletConfig,对应web.xml中元素,主要是用于加载Filter的初始化参数。

包含getServletContext()、getFilterName()、getInitParameter(String name)、getInitParameterNames()等方法。

FilterChain

Filter接口中doFilter()方法的参数之一为FilterChain,只包含doFilter(ServletRequest,ServletResponse)方法,链式调用。

如果当前过滤器是最后一个过滤器,那么调用chain.doFilter()方法表示执行目标资源;如果是最后一个过滤器,那么chain.doFilter()表示执行下一个过滤器的doFilter()方法。