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

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Git Flow印象

    Git Flow印象

    2021年8月21日
    70
  • startActivityForResult被标记为弃用后,如何优雅的启动Activity?

    startActivityForResult被标记为弃用后,如何优雅的启动Activity?startActivityForResult标记为弃用后,如何优雅的启动Activity?ActivityResultAPI已经出来有一段时间了,但是还是有很多朋友对这个API感到使用不便或疑惑,今天尽量用一篇简短的文章简述下registerForActivityResult的使用方法。

    2022年7月11日
    16
  • 产品流量分析

    产品流量分析年底要接的数据需求好多,博客好久没更新了。这次和大家分享一下最近对流量分析的一些理解。流量是产品获得用户的第一步,没有流量就没有转化与营收。对于流量的分析在产品日常运营效果监控中有着非常重要意义。下面我们就流量的来源与流向分析中需要关注哪些指标,展开叙述。这里首先放一张对流量来源和去向的图:从流量来源角度来看,其来源包括直接访问、搜索访问、商务合作以及自媒体等方面:直接访问:用户直…

    2022年6月2日
    36
  • 电商网站的搭建研究报告_连连跨境电商网站构建

    电商网站的搭建研究报告_连连跨境电商网站构建电商网站的搭建研究Researchontheconstructionofe-commercewebsite摘要互联网给全世界提供了最强大的网络平台,在互联网上不仅能同时快速传递大量的信息(数据、文件),而且还实现了网络营销、电子支付,提供各种新型的服务。经济全球化的发展态势和全球经济贸易的规模发展迫切需要一种新型的经济运作模式和商业运营模式。随着互联网的普及,还有各大电商平…

    2022年10月1日
    2
  • C语言 list 链表

    C语言 list 链表目录一、list简介二、list包含方法2.1.push_front2.2.push_back2.3.begin2.3.end2.2.pop_front2.2.pop_back2.2.size2.2.empty2.2.clear三、源码list.clist.h一、list简介这里用双向链表实现,包含插入头、插入尾、删除头、删除尾等操作。二、list包含方法2.1.push_front功能插入数据到list头部参数list:list指针,data:插入数据指

    2022年7月12日
    19
  • Linux搭建 Minecraft 服务器

    Linux搭建 Minecraft 服务器本篇文章介绍使用常规方式和docker容器方式在linux操作系统上搭建最新版本的minecraft服务器,并使用bungeecord配置为群组服务器模式。

    2022年6月18日
    40

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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