过滤器

1、新建类,实现 Filter 接口,并实现其中的方法:init 、 doFilter  、 destroy 。其中init和destroy只在程序启动和程序销毁时执行一次(tomcat)

 1 public class OneFilter implements Filter{
 2     private FilterConfig config;
 3     public void init(FilterConfig filterConfig) throws ServletException {
 4         this.config=filterConfig;
 5          System.out.println(config.getInitParameter("name"));
 6          System.out.println(config.getInitParameter("age"));
 7     }
 8     public void doFilter(ServletRequest request, ServletResponse response,
 9             FilterChain chain) throws IOException, ServletException {
10         System.out.println("1.................");//过滤前
11         chain.doFilter(request, response);//放行
12         System.out.println("2.................");//过滤后
13         
14     }
15     public void destroy() {        
16     }
17     
18 }

2、配置web.xml

 1   <filter>
 2       <filter-name>one</filter-name>
 3       <filter-class>cn.test.filter.OneFilter</filter-class>      
 4       <init-param>
 5           <param-name>name</param-name>
 6           <param-value>tom</param-value>
 7       </init-param>
 8       <init-param>
 9           <param-name>age</param-name>
10           <param-value>11</param-value>
11       </init-param>      
12   </filter>
13   <filter-mapping>
14       <filter-name>one</filter-name>
15       <url-pattern>/pages/*</url-pattern>      
16   </filter-mapping>

PS:

1、init-param:初始化参数,可以通过config.getInitParameter("name")获取值,一般在init函数中

2、url-pattern:要过滤的url路径(只能过滤url)  

url-pattern的设置:

         /*           对所有url都请求这个servlet。| 都被这个filter过虑.

         /             只可以给servlet。 - 所有其他的servlet不处理的url都由这个url所指定的servlet处理。默认servlet。

         *.jspx     所有以jspx结束都请求到这个Servlet或是被某个Filter拦截。如http://local:8080/proj/abc.jspx

     /jsps/*       所有路径中以/jsps/开头的都请求到这个servlet或是被某个filter拦截到。

     /jsps/*.jspx         错误的:SUN规定*两边不可以同时出现字符

3、在<filter></filter>中

  Dipatcher属性:

         Request – 默认值,只拦截用户的新的请求。

         Forward – 对转发进行拦截。

         Include – 对include拦截。

         Error  - 对错误进行拦截。

4、当一个项目中有多个过滤器时,过滤器的执行顺序与filter-mapping注册顺序有关,与filter的注册无关

原文地址:https://www.cnblogs.com/liuwt365/p/4121872.html