Spring MVC框架:第十章:拦截器

本文详细解析了拦截器的工作机制,包括HandlerInterceptor接口的三个关键方法preHandle、postHandle和afterCompletion的作用,以及如何通过配置文件精准控制拦截器的执行范围。

拦截器

拦截器最典型的用法是检查用户是否登录,登录后可以执行目标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()方法

评论 41
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Java程序员廖志伟

赏我包辣条呗

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值