SpringMVC拦截器的使用

定义拦截器,实现HandlerInterceptor接口。接口中提供三个方法。

 1 package cn.itcast.ssm.interceptor;
 2 
 3 import javax.servlet.http.HttpServletRequest;
 4 import javax.servlet.http.HttpServletResponse;
 5 
 6 import org.springframework.web.servlet.HandlerInterceptor;
 7 import org.springframework.web.servlet.ModelAndView;
 8 
 9 public class HandlerInterceptor1 implements HandlerInterceptor {
10 
11     
12     //进入 Handler方法之前执行
13     //用于身份认证、身份授权
14     //比如身份认证,如果认证通过表示当前用户没有登陆,需要此方法拦截不再向下执行
15     @Override
16     public boolean preHandle(HttpServletRequest request,
17             HttpServletResponse response, Object handler) throws Exception {
18         
19         System.out.println("HandlerInterceptor1...preHandle");
20         
21         //return false表示拦截,不向下执行
22         //return true表示放行
23         return true;
24     }
25 
26     //进入Handler方法之后,返回modelAndView之前执行
27     //应用场景从modelAndView出发:将公用的模型数据(比如菜单导航)在这里传到视图,也可以在这里统一指定视图
28     @Override
29     public void postHandle(HttpServletRequest request,
30             HttpServletResponse response, Object handler,
31             ModelAndView modelAndView) throws Exception {
32         
33         System.out.println("HandlerInterceptor1...postHandle");
34         
35     }
36 
37     //执行Handler完成执行此方法
38     //应用场景:统一异常处理,统一日志处理
39     @Override
40     public void afterCompletion(HttpServletRequest request,
41             HttpServletResponse response, Object handler, Exception ex)
42             throws Exception {
43         
44         System.out.println("HandlerInterceptor1...afterCompletion");
45     }
46 
47 }

 配置拦截器  :springmvc配置类似全局的拦截器,springmvc框架将配置的类似全局的拦截器注入到每个HandlerMapping中。

 1     <!--拦截器 -->
 2 <mvc:interceptors>
 3     <!--多个拦截器,顺序执行 -->
 4     <!-- 登陆认证拦截器 -->
 5     <mvc:interceptor>
 6         <mvc:mapping path="/**"/>
 7         <bean class="cn.itcast.ssm.interceptor.LoginInterceptor"></bean>
 8     </mvc:interceptor>
 9     <mvc:interceptor>
10         <!-- /**表示所有url包括子url路径 -->
11         <mvc:mapping path="/**"/>
12         <bean class="cn.itcast.ssm.interceptor.HandlerInterceptor1"></bean>
13     </mvc:interceptor>
14     <mvc:interceptor>
15         <mvc:mapping path="/**"/>
16         <bean class="cn.itcast.ssm.interceptor.HandlerInterceptor2"></bean>
17     </mvc:interceptor>
18 </mvc:interceptors>
原文地址:https://www.cnblogs.com/ustc-anmin/p/10494746.html