拦截器
拦截器最典型的用法是检查用户是否登录,登录后可以执行目标handler方法,未登录则跳转到登录页面。这样的操作要是在每个拦截器内部来写就太麻烦了,统一提取到拦截器中是明智之举。
1.HandlerInterceptor接口
①preHandle()方法
签名:boolean preHandle(HttpServletRequest, HttpServletResponse, Object) 在执行目标handler方法之前执行,如果返回true,则继续执行后续拦截器和目标handler方法;如果返回false则不执行。注意:返回false时最好借助转发或重定向等方式为客户端提供一个响应页面。
②postHandle()方法
签名:void postHandle(HttpServletRequest, HttpServletResponse, Object, ModelAndView) 在执行目标handler方法之后、渲染视图之前执行。
③afterCompletion()方法
在渲染视图之后、返回响应之前执行。
2.HandlerInterceptorAdapter类
实现HandlerInterceptor接口需要把所有抽象方法都实现,而继承HandlerInterceptorAdapter类则可以有选择的重写需要的方法,更加便捷,推荐使用。
3.配置方式
①拦截所有请求
<mvc:interceptors>
<bean class="com.interceptor.FirstInterceptor"/>
<bean class="com.interceptor.SecondInterceptor"/>
</mvc:interceptors>
②精确指定拦截的请求
<mvc:interceptors>
<bean class="com.interceptor.FirstInterceptor"/>
<bean class="com.interceptor.SecondInterceptor"/>
<mvc:interceptor>
<mvc:mapping path="/*"/>
<mvc:exclude-mapping path="/specailPath"/>
<bean class="com.interceptor.SpecialInterceptor"/>
</mvc:interceptor>
</mvc:interceptors>
4.多个拦截器的执行顺序
①按正序依次调用preHandle()方法 ②执行目标handler方法 ③按反序调用postHandle()方法 ④按反序调用afterCompletion()方法
标签:
拦截器
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?