SpringMVC 拦截器的使用「建议收藏」

SpringMVC 拦截器的使用「建议收藏」SpringMVC拦截器的使用1.拦截器作用2.单个拦截器3.多个拦截器参考资料:https://spring-mvc.linesh.tw/1.拦截器作用SpringMVC框架中的拦截器用于对处理器进行预处理和后处理的技术。可以定义拦截器链,连接器链就是将拦截器按着顺序结成一条链,在访问被拦截的方法时,拦截器链中的拦截器会按着定义的顺序执行。拦截器和过滤器的功能比较类似,有以下区别:过滤器是Servlet规范的一部分,任何框架都可以使用过滤器技术;拦截器是SpringM

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

image-20200620175456961

1. 拦截器作用

SpringMVC 框架中的拦截器用于对处理器进行预处理后处理的技术。

可以定义拦截器链,连接器链就是将拦截器按着顺序结成一条链,在访问被拦截的方法时,拦截器链中的拦截器会按着定义的顺序执行。

拦截器和过滤器的功能比较类似,有以下区别:

  • 过滤器是 Servlet 规范的一部分,任何框架都可以使用过滤器技术;
    拦截器是 SpringMVC 框架独有的

  • 过滤器配置了 /*,可以拦截任何资源;
    拦截器只会对控制器中的方法进行拦截

拦截器也是 AOP 思想的一种实现方式。

2. 单个拦截器

自定义拦截器,需要实现 HandlerInterceptor 接口。

  1. 创建自定义拦截器
public class MyInterceptor implements HandlerInterceptor { 
   
    /** * 预处理,controller 方法执行前 * 应用:用于身份认证、身份授权 * return true 放行,执行下一个拦截器,如果没有,执行 controller 中的方法 * return false 不放行,即不向下执行 */
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { 
   
        System.out.println("preHandle");
        return true;
    }

    /** * 后处理方法,controller 方法执行后,方法跳转 success.jsp 执行之前 * 应用:从modelAndView出发:将公用的模型数据(比如菜单导航)在这里传到视图,也可以在这里统一指定视图 */
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { 
   
        System.out.println("postHandle");
    }

    /** * success.jsp 页面执行后,该方法会执行 * 应用:统一异常处理,统一日志处理 */
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { 
   
        System.out.println("afterCompletion");
    }
}

Jetbrains全家桶1年46,售后保障稳定

  1. 在 springmvc.xml 中配置拦截器
   <!--配置拦截器-->
    <mvc:interceptors>
        <!--配置拦截器,多个拦截器时,顺序执行-->
        <mvc:interceptor>
            <!--要拦截的具体的方法-->
            <mvc:mapping path="/user/*"/>
            <!--不去拦截的方法 <mvc:exclude-mapping path=""/> -->
            <!--配置拦截器对象-->
            <bean class="com.qf.interceptor.MyInterceptor" />
        </mvc:interceptor>
    </mvc:interceptors>
  1. 测试
@RequestMapping("/testInterceptor")
public String testInterceptor(){ 
   
    System.out.println("testInterceptor执行了...");
    return "success";
}

3. 多个拦截器

注意:

  • 多个拦截器时,按照 springmvc.xml 配置的顺序执行。
  • (2个拦截器时) 拦截器1 preHandle 不放行,postHandle 和 afterCompletion 不会执行。
  • (2个拦截器时) 拦截器1 preHandle 不放行,拦截器2不执行。

image-20200622192223998

2个拦截器的执行流程:

HandlerInterceptor1…preHandle
HandlerInterceptor2…preHandle

HandlerInterceptor2…postHandle
HandlerInterceptor1…postHandle

HandlerInterceptor2…afterCompletion
HandlerInterceptor1…afterCompletion

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/234149.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • F5 在 Gartner 魔力象限中被评为 Web 应用防火墙领导者

    F5 在 Gartner 魔力象限中被评为 Web 应用防火墙领导者F5Networks(NASDAQ:FFIV)今天宣布,F5公司在Gartner公司于2017年8月7日公布的“Web应用防火墙(WAF)魔力象限”中被列入“领导者”象限。F5执行副总裁兼首席营销官BenGibson表示:“我们的应用安全管理器,即WAF,一直是F5最受欢迎的产品之一。许多客户都依靠它来保护应用免…

  • 深入理解深度学习分割网络Unet——U-Net: Convolutional Networks for Biomedical Image Segmentation

    深入理解深度学习分割网络Unet——U-Net: Convolutional Networks for Biomedical Image Segmentation背景Mask=Function(I)1.什么是图像分割问题呢?简单的来讲就是给一张图像,检测是用框出框出物体,而图像分割分出一个物体的准确轮廓。也这样考虑,给出一张图像I,这个问题就是求一个函数,从I映射到Mask。至于怎么求这个函数有多种方法。我们可以看到这个图,左边是给出图像,可以看到人和摩托车,右边是分割结果。2.求这个函数有很多方法,但是第一次将深…

  • JAVA日期格式化(Simpledateformat)

    Java日期格式化常用方法Java中Date类中的一些日期格式话方法都已过期,所以不推荐使用。一般格式化时,常用到这两个类:Calendar和SimpleDateFormat,使用方法如下:1.Calendar类Calendar类是abstract的,所以实例化方式得用静态方法:Calendarc=Calendar.getInstance();,此时的生成的实例依据的是当前系统时间;c.se…

  • 微软Office2007专业增强版 集成最新SP3[通俗易懂]

    微软Office2007专业增强版 集成最新SP3[通俗易懂]微软Office2007专业增强版,集成最新SP3补丁包,集成序列号,安装完后自动激活,不仅在功能上进行了优化,而且安全性稳定性更得到了巩固。  MicrosoftOfficeProfessionalPlus2007包括:  MicrosoftOfficeExcel2007  MicrosoftOfficeOutlook2007  MicrosoftOfficePower…

  • 关于rndc-confgen 在centos 上不能用的解决方法

    关于rndc-confgen 在centos 上不能用的解决方法

  • Android4.0 input事件输入流程详解(中间层到应用层)

    Android4.0 input事件输入流程详解(中间层到应用层)在Android系统中,类似于键盘按键、触摸屏等事件是由WindowManagerService服务来管理的,然后再以消息的形式来分发给应用程序进行处理。系统启动时,窗口管理服务也会启动,该服务启动过程中,会通过系统输入管理器InputManager来负责监控键盘消息。当某一个Activity激活时,会在该Service下注册一个接收消息的通道,表明可以处理具体的消息,然后当有消息时,InputM

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号