首页 > 其他分享 >10、拦截器Interceptor的使用

10、拦截器Interceptor的使用

时间:2022-12-08 10:31:42浏览次数:37  
标签:10 拦截器 请求 验证 3.2 Interceptor 执行 true


1          什么是拦截器

拦截器可以在请求执行流程中的某个位置拦截请求并执行代码,也可以终止请求流程的执行

 

2          拦截器可以做什么

拦截器通常用作权限验证,或者日志记录等

 

3          Interceptor(拦截器)与servletapi中的filter功能类似

3.1         下图是spring mvc的处理流程,请求经过dispatcher servlet的调度后,会顺序执行一系列的interceptor(拦截器)并执行其中的方法,拦截器有三个方法

10、拦截器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

相关文章