0%

【SpringMVC】拦截器

关于SpringMVC的拦截器介绍

1.拦截器概述

  • 拦截器是SpringMVC框架自己的,只有使用了SpringMVC工程才能使用
  • 拦截器只会拦截访问的控制器方法,不会拦截jsp/html/css/image/js

2.自定义拦截器

1
2
3
4
5
6
7
8
9
10
//配置简单的Controller
@RestController
public class InterceptController {

@GetMapping("/test")
public String test() {
System.out.println("controller执行了");
return "跳转成功";
}
}

2.1 创建自定义拦截器

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public class MyInterceptor implements HandlerInterceptor { //实现handleInterceptor

@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
//return true: 放行; return false:拦截
System.out.println("Controller处理前");
return false;
}

@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
System.out.println("Controller处理后");
}

@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
System.out.println("清理");
}
}

2.2 配置拦截器

1
2
3
4
5
6
7
8
9
<!-- 在web.xml文件中配置 -->
<mvc:interceptors>
<mvc:interceptor>
<!--添加要拦截的路径-->
<mvc:mapping path="/test" />
<!--对应的自定义拦截器-->
<bean class="com.letere.config.MyInterceptor"/>
</mvc:interceptor>
</mvc:interceptors>

2.3 执行结果

1
2
3
4
Controller处理前
controller执行了
Controller处理后
清理