**
图片
**
1.单个
2.多个
1.单个代码
package com.qkjia.edu.interceptor;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* @author zqk
* @since 2021-12-10 23:44
* 自定义拦截器
*/
public class MyInterceptor01 implements HandlerInterceptor {
/**
* 会在handler方法业务逻辑执行之前执行
* 往往在这里完成权限校验工作
* @param request 请求
* @param response 返回
* @param handler 拦截方法
* @return 返回值boolean代表是否放行,true代表放行,false代表中止
* @throws Exception 异常
*/
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
System.out.println("MyIntercepter01 preHandle......");
return true;
}
/**
* 会在handler方法业务逻辑执行之后尚未跳转页面时执行
* @param request 请求
* @param response 返回
* @param handler 拦截方法
* @param modelAndView 封装了视图和数据,此时尚未跳转页面呢,你可以在这里针对返回的数据和视图信息进行修改
* @throws Exception 异常
*/
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
System.out.println("MyIntercepter01 postHandle......");
}
/**
* 页面已经跳转渲染完毕之后执行
* @param request 请求
* @param response 返回
* @param handler 拦击方法
* @param ex 可以在这里捕获异常
* @throws Exception 异常
*/
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
System.out.println("MyIntercepter01 afterCompletion......");
}
}
springmvc.xml
<mvc:interceptors>
<!-- 拦截鄋handler-->
<!-- <bean class="com.qkjia.edu.interceptor.MyInterceptor01"/>-->
<mvc:interceptor>
<!-- 配置当前拦截的url拦截规则,**代表当前目录以及子目录下的所有url-->
<mvc:mapping path="/**"/>
<!-- exclude-mapping 注意要排除首先你要的有 可以在mapping的基础上排除一些url拦截-->
<!-- <mvc:exclude-mapping path="/demo/**"/>-->
<bean class="com.qkjia.edu.interceptor.MyInterceptor01"/>
</mvc:interceptor>
</mvc:interceptors>
打印控制台
多个代码
package com.qkjia.edu.interceptor;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* @author zqk
* @since 2021-12-10 23:44
* 自定义拦截器 增加是为了测试多个拦截器顺序
*/
public class MyInterceptor02 implements HandlerInterceptor {
/**
* 会在handler方法业务逻辑执行之前执行
* 往往在这里完成权限校验工作
* @param request 请求
* @param response 返回
* @param handler 拦截方法
* @return 返回值boolean代表是否放行,true代表放行,false代表中止
* @throws Exception 异常
*/
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
System.out.println("MyIntercepter02 preHandle......");
return true;
}
/**
* 会在handler方法业务逻辑执行之后尚未跳转页面时执行
* @param request 请求
* @param response 返回
* @param handler 拦截方法
* @param modelAndView 封装了视图和数据,此时尚未跳转页面呢,你可以在这里针对返回的数据和视图信息进行修改
* @throws Exception 异常
*/
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
System.out.println("MyIntercepter02 postHandle......");
}
/**
* 页面已经跳转渲染完毕之后执行
* @param request 请求
* @param response 返回
* @param handler 拦击方法
* @param ex 可以在这里捕获异常
* @throws Exception 异常
*/
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
System.out.println("MyIntercepter02 afterCompletion......");
}
}
加上刚才的1
springmvc.xml配置拦截器
<mvc:interceptors>
<!-- 拦截鄋handler-->
<!-- <bean class="com.qkjia.edu.interceptor.MyInterceptor01"/>-->
<mvc:interceptor>
<!-- 配置当前拦截的url拦截规则,**代表当前目录以及子目录下的所有url-->
<mvc:mapping path="/**"/>
<!-- exclude-mapping 注意要排除首先你要的有 可以在mapping的基础上排除一些url拦截-->
<!-- <mvc:exclude-mapping path="/demo/**"/>-->
<bean class="com.qkjia.edu.interceptor.MyInterceptor01"/>
</mvc:interceptor>
<mvc:interceptor>
<mvc:mapping path="/**"/>
<bean class="com.qkjia.edu.interceptor.MyInterceptor02"/>
</mvc:interceptor>
</mvc:interceptors>
打印控制台