SpringMVC拦截器
拦截器作用
SpringMVC 的拦截器类似于 Servlet 开发中的过滤器 Filter,用于对处理器进行预处理和后处理;
将拦截器按一定顺序连接成一条链,这条链成为拦截器链(Interceptor Chain);
在访问被拦截的方法或字段时,拦截器链中的拦截器就会按之前定义的顺序被调用;
拦截器也是 AOP 思想的具体实现。
拦截器和过滤器区别
区别 | 过滤器(Filter) | 拦截器(Interceptor) |
---|---|---|
适用范围 | servlet 规范中的一部分, 任何 Java Web 工程都可以使用 |
SpringMVC框架才能使用 |
拦截范围 | 在 url-pattern 中配置 /* 后, 可以对所有要访问的资源拦截 |
在 <mvc:mapping path=”” /> 中配置 /** 后,也可以全部拦截, 但是可以通过 <mvc:exclude-mapping path=”” />标签, 排除不需要拦截的资源 |
自定义拦截器
创建拦截器类实现 HandlerInterceptor 接口
方法名 说明 preHandle() 方法将在请求处理之前进行调用,返回值为布尔类型,
当返回值为 false 时,表示请求结束;
当返回值为 true 时,继续调用下一个拦截器的 preHandle 方法postHandle() 方法在 preHandle 方法返回值为 true 时才能被调用,
并且会在视图返回渲染之前被调用afterCompletion() 在整个请求结束后即渲染视图之后执行 配置拦截器在 spring-mvc.xml 文件中
1
2
3
4
5
6
7
8<!-- 配置拦截器-->
<mvc:interceptors>
<mvc:interceptor>
<!-- 对哪些资源执行拦截操作-->
<mvc:mapping path="/**"/>
<bean class="com.yuanhao.controller.interceptor.MyInterceptor1"/>
</mvc:interceptor>
</mvc:interceptors>测试拦截器
SpringMVC拦截器
https://eminem-x-github-io.vercel.app/2022/01/30/Java/13-SpringMVC拦截器/