我是靠谱客的博主 勤恳嚓茶,最近开发中收集的这篇文章主要介绍SpringMVC 拦截器1 拦截器简介2 定义拦截器 3.创建拦截器4 定义全局拦截器5 多拦截器执行顺序,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
目录
1 拦截器简介
1.1什么是拦截器
1.2拦截器执行流程
1.3拦截器和过滤器的区别
2 定义拦截器
2.1.1 preHandle 方法
2.1.2 postHandle 方法
2.1.3 afterCompletion 方法
3.创建拦截器
3.1 编写拦截器代码
3.2 编写拦截器配置文件
4 定义全局拦截器
4.1 拦截器代码(略)
4.2 编写全局拦截器配置
5 多拦截器执行顺序
1 拦截器简介
1.1什么是拦截器
Spring MVC
的拦截器(
Interceptor
)与
Servlet
的过滤器(
Filter
)类似,它主要用于拦
截用户的请求并做相应的处理,通常应用在权限验证、记录请求信息的日志、判断用户是否
登录等功能上。
1.2拦截器执行流程
1.3拦截器和过滤器的区别
拦截器 SpringMVC
组件,而过滤器是
Servlet
组件。
拦截器不依赖容器,过滤器依赖容器。
拦截器只能对控制器请求起作用,而过滤器则可以对所有的请求起作用。
拦截器可以获取 IOC
容器中的各个
bean
,而过滤器就不太方便。
2 定义拦截器
在
HandlerInterceptor
接口中包含了三个抽象方法,分别表示拦截的时间点。
2.1.1 preHandle 方法
该方法在控制器的处理请求方法前执行,其返回值表示是否中断后续操作,返回
true
表示继续向下执行,返回
false
表示中断后续操作
2.1.2 postHandle 方法
该方法在控制器的处理请求方法执行之后、视图解析之前执行,可以通过此方法对请求
域中的模型和视图做进一步的修改。
2.1.3 afterCompletion 方法
该方法在控制器的处理请求方法执行完成后执行,即视图渲染结束后执行,可以通过此
方法实现一些资源清理、记录日志信息等工作。
3.创建拦截器
3.1 编写拦截器代码
import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class MyInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println("PreHandle: 在处理请求的目标方法执行之前"); return true; } @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { System.out.println("postHandle: 目标方法执行后,视图解析器处理视图之前"); } @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { System.out.println("afterCompletion: 为客户端产生响应之前。"); } } |
3.2 编写拦截器配置文件
需要在
SpringMVC
的配置文件中,通过
<mvc:interceptors>
标签配置拦截器
<!--
配置拦截器
-->
<
mvc
:interceptors
>
<
mvc
:interceptor
>
<!-- mapping:
配置拦截器的作用路径
-->
<
mvc
:mapping
path
="/**"
/>
<!--
配置不需要拦截的作用路径
-->
<
mvc
:exclude-mapping
path
="/user/getUsers"
/>
<
bean
class
="com.star.interceptor.MyInterceptor"
/>
</
mvc
:interceptor
>
</
mvc
:interceptors
>
|
4 定义全局拦截器
全局拦截器是指可以拦截所有被控制器所处理
URL
。作用等同于
/**
4.1 拦截器代码(略)
和普通拦截器一样,只是配置不同
4.2 编写全局拦截器配置
<!--
配置拦截器
-->
<
mvc
:interceptors
>
<!--
配置全局拦截器
-->
<
bean
class
="com.star.interceptor.GlobalInterceptor"
/>
<
mvc
:interceptor
>
<!-- mapping:
配置拦截器的作用路径
-->
<
mvc
:mapping
path
="/**"
/>
<!--
配置不需要拦截的作用路径
-->
<!--<mvc:exclude-mapping path="/user/getUsers"/>-->
<
bean
class
="com.star.interceptor.MyInterceptor"
/>
</
mvc
:interceptor
>
</
mvc
:interceptors
>
|
5 多拦截器执行顺序
如果一个
URL
能够被多个拦截器所拦截,全局拦截器最先执行,其他拦截器根据配置
文件中配置的上下顺序来决定执行顺序的。先配置谁, 谁就先执行。
最后
以上就是勤恳嚓茶为你收集整理的SpringMVC 拦截器1 拦截器简介2 定义拦截器 3.创建拦截器4 定义全局拦截器5 多拦截器执行顺序的全部内容,希望文章能够帮你解决SpringMVC 拦截器1 拦截器简介2 定义拦截器 3.创建拦截器4 定义全局拦截器5 多拦截器执行顺序所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复