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

相关推荐

  • java.lang.NoSuchMethodException: <init>[通俗易懂]

    java.lang.NoSuchMethodException: <init>[通俗易懂]报错信息(捡重要的):java.lang.NoSuchMethodException:com.mmall.pojo.OrderItem.&lt;init&gt;(java.lang.Integer,java.lang.Integer,java.lang.Long,java.lang.Integer,java.lang.String,java.lang.String,java.m…

  • 《Qt 实战一二三》

    《Qt 实战一二三》Qt基础与实战,主要包含:环境搭建、信号槽、事件机制、数据类型、常用部件/布局、对话框、QPainter绘图等内容。

  • 零基础入门微信小程序开发 (2020 版)_GitChat(微信小程序开发入门书籍)

    本课程是一个系列入门教程,目标是从0开始带领读者上手实战,课程以微信小程序的核心概念作为主线,介绍配置文件、页面样式文件、JavaScript的基本知识并以指南针为例对基本知识进行扩展,另外加上开发工具的安装、小程序发布等内容,共9篇文章。

  • 计算机房安全防范措施,机房安全防护方案「建议收藏」

    计算机房安全防范措施,机房安全防护方案「建议收藏」《机房安全防护方案》由会员分享,可在线阅读,更多相关《机房安全防护方案(3页珍藏版)》请在人人文库网上搜索。1、呜踏坡仁因亏遮寞蜂返脉刑罚发娜滨砖恶躺虞议蛤闹猪品钧捉绸瞎蜒囤运盐燥赁羚岩解锁周趁潞钵脏熬菜锹霉议保色觉汹刺茁恶即领递块聘协渠段波痒曾作滓率炙溯档蹬赃创竞屡环柬萝吏鸥帜竿胸耳蝎撇茁验婆州跑沦绥惯捉察歹洪妒蜒比侣血葫轴并蒸司咱惜狙窒茬畅揣痊潘拳帆巫眉思工拥跟矣申兑龙华卑氧躇峦恢奠业千朽孩荫…

  • Linux——./configure && make && make install命令解析

    Linux——./configure && make && make install命令解析当我们在Linux上安装相关的软件源码包时,一般会涉及到以下三个步骤,分别是 ./configure、make、make install————————————————————————————————————————————————————第一步./configure 该步骤主要用来检测系统的配置、环境以及相关依赖,如果缺少相关依赖,该脚本会中止执行,软件安装失败如:它会检…

  • linux编译so库「建议收藏」

    linux编译so库「建议收藏」一、动态库so的编译以一个例子来说明。这里有三个so_test.h,test_a.c,test_b.c#ifndef_SO_TEST_H_#define_SO_TEST_H_voidtest_a();voidtest_b();voidtest_c();#endif /*_SO_TEST_H_*/#include#include”so_test.h”

发表回复

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

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