1 什么是拦截器
拦截器可以在请求执行流程中的某个位置拦截请求并执行代码,也可以终止请求流程的执行
2 拦截器可以做什么
拦截器通常用作权限验证,或者日志记录等
3 Interceptor(拦截器)与servletapi中的filter功能类似
3.1 下图是spring mvc的处理流程,请求经过dispatcher servlet的调度后,会顺序执行一系列的interceptor(拦截器)并执行其中的方法,拦截器有三个方法
3.2 bool preHandle,在步骤5处执行
3.2.1 返回true则继续下一个拦截器
3.2.2 返回false则中止请求,不再进入后面的拦截器与Controller中的方法
3.3 Void postHandle,在步骤10处执行
3.4 Void afterHandle,在步骤12处执行
4 使用拦截器
要使用拦截器可以通过继承HandlerInterceptorAdapter类并重写其中发方法来实现,建立拦截器如下
public class MobileInterceptor extends HandlerInterceptorAdapter{
@Autowired private IStoreService storeService;
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
//验证用户权限
boolean isLogin = true;
if(isLogin){
//用户权限验证成功
return true;
}else {
//用户权限验证失败则跳转,并终止请求流程
response.sendRedirect("/mob/login");
return false;
}
}
}
5 将拦截器配置到spring-mvc.xml中
<!-- 拦截器配置 -->
<mvc:interceptors>
<!-- 直接配置则拦截所有mvc请求
<bean class="bnsy.sis.interceptor.MobileInterceptor>
-->
<!-- 单独配置则拦截配置的请求地址 -->
<mvc:interceptor>
<mvc:mapping path="/mob/**" />
<mvc:exclude-mapping path="/mob/login" />
<mvc:exclude-mapping path="/mob/autoLogin" />
<bean class="bnsy.sis.interceptor.MobileInterceptor" />
</mvc:interceptor>
</mvc:interceptors>
6 执行我们的要验证的页面和不验证的页面,查看控制台的输出
标签:10,拦截器,请求,验证,3.2,Interceptor,执行,true From: https://blog.51cto.com/u_15906220/5920667