springMVC之拦截器

news2024/11/22 23:04:17

文章目录

  • 前言
  • 一、拦截器的配置
  • 二、拦截器的三个抽象方法
  • 三、多个拦截器的执行顺序
  • 总结


前言

拦截器


一、拦截器的配置

SpringMVC中的拦截器用于拦截控制器方法的执行
SpringMVC中的拦截器需要实现HandlerInterceptor
SpringMVC的拦截器必须在SpringMVC的配置文件中进行配置:

   <mvc:interceptors>
<!--        <bean class="com.dragon.mvc.interceptors.FirstInterceptors"></bean>-->
<!--        <ref bean="firstInterceptor"></ref>-->
        <!-- 以上两种配置方式都是对DispatcherServlet所处理的所有的请求进行拦截 -->
<!--        <mvc:interceptor>-->
<!--            <mvc:mapping path="/**"/>-->
<!--            <mvc:exclude-mapping path="/testRequestEntity"/>-->
<!--            <ref bean="firstInterceptors"></ref>-->
<!--        </mvc:interceptor>-->
        <ref bean="firstInterceptor"></ref>
        <ref bean="secondInterceptor"></ref>
    </mvc:interceptors>
    <!--
    以上配置方式可以通过ref或bean标签设置拦截器,通过mvc:mapping设置需要拦截的请求,通过
    mvc:exclude-mapping设置需要排除的请求,即不需要拦截的请求
    -->

FirstIntercepor类:

package com.dragon.mvc.interceptors;

import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@Component
public class FirstInterceptor implements HandlerInterceptor {
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        System.out.println("FirstInterceptors----->preHandle");
        return true;
    }

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        System.out.println("FirstInterceptors----->postHandle");;
    }

    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        System.out.println("FirstInterceptors----->afterCompletion");
    }
}

SecondInterceptor类:

package com.dragon.mvc.interceptors;

import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@Component
public class SecondInterceptor implements HandlerInterceptor {
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        System.out.println("SecondInterceptor----->preHandle");
        return true;
    }

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        System.out.println("SecondInterceptor----->postHandle");;
    }

    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        System.out.println("SecondInterceptor----->afterCompletion");
    }
}

二、拦截器的三个抽象方法

SpringMVC中的拦截器有三个抽象方法:
preHandle:控制器方法执行之前执行preHandle(),其boolean类型的返回值表示是否拦截或放行,返回true为放行,即调用控制器方法;返回false表示拦截,即不调用控制器方法。
postHandle:控制器方法执行之后执行postHandle()
afterComplation:处理完视图和模型数据,渲染视图完毕之后执行afterComplation()。

三、多个拦截器的执行顺序

  • 若每个拦截器的preHandle()都返回true此时多个拦截器的执行顺序和拦截器在SpringMVC的配置文件的配置顺序有关:preHandle()会按照配置的顺序执行,而postHandle()和afterComplation()会按照配置的反序执行
  • 若某个拦截器的preHandle()返回了false
    preHandle()返回false和它之前的拦截器的preHandle()都会执行,postHandle()都不执行,返回false的拦截器之前的拦截器的afterComplation()会执行。
    在上面的代码中FirstInterceptor和SecondInterceptor配置的顺序,运行的结果如下:
    在这里插入图片描述
    如果把上诉拦截器的类中preHandle方法其中一个返回false呢,大家可以看一下效果。
    大家可以看一下源码继续深入了解一下就明白了。

总结

以上就是拦截器的讲述。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/940152.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数字化智能工厂信息化系统集成整合规划建设方案[150页word]

导读&#xff1a;原文《150页6万字数字化智能工厂信息化系统集成整合规划建设方案》&#xff08;获取来源见文尾&#xff09;&#xff0c;本文精选其中精华及架构部分&#xff0c;逻辑清晰、内容完整&#xff0c;为快速形成售前方案提供参考。 数字化智能工厂建设方案 设备智…

大数据学习:Hive常用函数

Hive常用函数 1. Hive的参数传递 1.1 Hive命令行 查看hive命令的参数 [hadoopnode03 ~]$ hive -help语法结构: hive [-hiveconf xy]* [<-i filename>]* [<-f filename>|<-e query-string>][-S] 说明&#xff1a; -i 从文件初始化HQL。-e从命令行执行指定…

LVDS 2-port RGB 转 MIPI参数计算

有一些显示器是只给了屏幕的参数&#xff0c;屏幕输入的参数不一定&#xff0c;可能是输出的MIPI 给显示器&#xff0c;显示内部转换后是LVDS RGB&#xff0c;因此需要转换。 屏幕参数 转换为MIPI参数

当我焦虑时,我从CSDN的博主身上学到了什么?

文章目录 前言一、思考为什么会产生差距1.1 懒惰1.2 没有合理的规划学习时间 二、我该如何做&#xff1f;2.1 认真生活规律作息2.2 做事就是0和1 结语 前言 我们在学习的过程当中总会遇到一些比我们自己优秀的人&#xff0c;不论你是在更好的985或211院校学习&#xff0c;还是…

计算系统丢失CONCRT140.dll文件的四种解决方法(亲测可用)

今天&#xff0c;我将为大家分享一个关于计算机技术的问题——计算系统丢失CONCRT140.dll文件的四种解决方法。希望我的分享能够帮助到大家&#xff0c;解决你们在日常生活和工作中遇到的困扰。 CONCRT140.dll是Windows操作系统中的一个动态链接库文件&#xff0c;它包含了一些…

迅为RK3588开发板Android12 设置系统默认不锁屏

修改 frameworks/base/packages/SettingsProvider/res/values/defaults.xml 文件&#xff0c;修改为如下 所示&#xff1a; - <bool name"def_lockscreen_disabled">false</bool> <bool name"def_lockscreen_disabled">true</bool&…

Linux————LNMT搭建

一、原理 搭建一个基于Linux系统的Web服务器&#xff0c;使用Nginx作为反向代理服务器&#xff0c;Tomcat作为应用服务器&#xff0c;MySQL作为数据库服务器。 Linux操作系统 基于Linux的操作系统 Nginx Nginx是一款高性能的Web服务器和反向代理服务器&#xff0…

传承精神 缅怀伟人——湖南多链优品科技有限公司赴韶山开展红色主题活动

8月27日上午&#xff0c; 湖南多链优品科技有限公司全体员工怀着崇敬之情&#xff0c;以红色文化为引领&#xff0c;参加了毛泽东同志诞辰130周年的纪念活动。以董事长程小明为核心的公司班子成员以及全国优秀代表近70人一行专赴韶山&#xff0c;缅怀伟人毛泽东同志的丰功伟绩。…

Jenkins自动化部署-Jenkins的安装

首先我们需要安装docker 安装 yum-utils包 yum install -y yum-utils \ device-mapper-persistent-data \ lvm2 --skip-broken 设置镜像地址 yum-config-manager \ --add-repo \ https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce…

经过6年发展,NIST发布三种可以抵御量子计算机未来攻击的算法标准草案

近日&#xff0c;美国国家标准与技术研究院&#xff08;NIST&#xff09;发布了2022年选定的四种算法中的三种算法的标准草案&#xff1a;CRYSTALS–KYBER、CRYSTALS–Dilithium和SPHINCS&#xff0c;第四种算法FALCON的标准草案将在大约一年内发布。 近年关于量子计算机的研究…

302 | 异常 exception

异常处理 快捷键 CtrlAltt 一般来说&#xff0c;运行时异常可不做处理&#xff0c;因为太常见了&#xff0c;影响代码执行效率&#xff1b;而编译时异常是编译器必须处理的异常 两类异常 Error 严重错误&#xff0c;程序崩溃&#xff1a;JVM无法解决的严重问题&#xff0c;如…

SRE方法论之减少琐事

我们先回顾一下SRE的定义&#xff1a;SRE就是用软件工程的思维和方法论&#xff0c;通过设计、构建自动化工具完成以前由运维工程师手动操作的任务。所以&#xff0c;SRE要把更多的时间花费在长期项目研发上而非日常运维中的琐事。 一、什么是琐事 琐事就是运维服务中手动性的…

c++冒泡排序的动画演示+程序实现

冒泡排序&#xff08;Bubble Sort&#xff09;是一种计算机科学领域的较简单的排序算法。 它重复地走访过要排序的元素列&#xff0c;依次比较两个相邻的元素&#xff0c;如果顺序&#xff08;如从大到小、首字母从Z到A&#xff09;错误就把他们交换过来。走访元素的工作是重复…

算法的影响力有多少

目录 1.什么是算法 2.算法的应用领域 3.学习算法需要掌握哪些知识 4.算法给人类带来了哪些便利 1.什么是算法 算法是一系列解决问题或执行任务的有序步骤的集合。它是一种用于描述和解决计算问题的具体方法或规则。算法由若干个明确定义的步骤组成&#xff0c;每个步骤都表…

Vue插槽实现商品列表-编辑渲染

商品列表 文章目录 商品列表核心步骤创建组件 1. MyTag组件详细步骤双击显示&#xff0c;自动聚焦失去焦点&#xff0c;隐藏输入框回显标签信息回车修修改内容&#xff0c;同时隐藏输入框 MyTable组件详细步骤1-动态的设置整个表格的数据 &#xff1a; props2-实现自定义结构-插…

飞致云及其旗下1Panel进入2023年第二季度最具成长性开源初创榜单

近日&#xff0c;知名风险投资机构Runa Capital发布了2023年第二季度ROSS指数&#xff08;Runa Open Source Startup Index&#xff09;。ROSS指数按季度汇总并公布在代码托管平台GitHub上年化增长率&#xff08;AGR&#xff09;排名前二十位的开源初创公司和开源项目。在这份名…

六款热门项目协作软件详解:解析项目管理利器

项目协作已经成为了企业、组织以及个人工作中不可或缺的一部分。通过使用项目协作软件&#xff0c;团队成员可以更加高效地协同工作&#xff0c;提高工作效率和质量。本文将介绍项目协作软件的功能和种类&#xff0c;帮助读者更好地了解这一领域的发展和应用。 "项目协作软…

自行研发与使用第三方向量数据库的优劣分析

目录 一、自行研发向量数据库的优势 然而,自行研发向量数据库也存在一些明显的劣势: 二、使用第三方向量数据库的优势 然而,使用第三方向量数据库也存在一些劣势: 三、对于大多数企业而言,使用第三方向量数据库更具优势 在现代科技领域,向量数据库是处理大量数据的关…

18V降压5V芯片

航誉微高效率同步降压芯片。输出电流可以高达2A。采用两种工作模式&#xff1a;PWM与PFM切换工作。92%的占空比实现了低压操作并延长了便携系统的电池使用寿命&#xff1b;输出电压可调&#xff1b;振荡频率为 600KHz&#xff08;典型值&#xff09;。内部同步开关提高了效率并…

windows安装Scala

Windows安装Scala 下载地址&#xff1a;https://downloads.lightbend.com/scala/2.11.11/scala-2.11.11.zip 解压完成之后 配置环境变量