Spring MVC 拦截器总结

1.简介

Spring MVC提供了拦截器方便在接口调用前后进行一些通用处理。

2.步骤

1.实现一个拦截器类,共有三处拦截时机:

public class Interceptor1 implements HandlerInterceptor {//实现HandlerInterceptor接口//执行handler之前调用//编码格式处理,登录保护,权限处理@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {System.out.println("Interceptor1.preHandle");return true;//拒绝还是通过}//handler执行完毕后执行//检查敏感词汇@Overridepublic void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {System.out.println("Interceptor1.postHandle");HandlerInterceptor.super.postHandle(request, response, handler, modelAndView);}//整体处理完毕执行@Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {System.out.println("Interceptor1.afterCompletion");HandlerInterceptor.super.afterCompletion(request, response, handler, ex);}
}

2.在配置类中注册拦截类:

public class MvcConfig implements WebMvcConfigurer {//实现WebMvcConfigurer接口
...@Overridepublic void addInterceptors(InterceptorRegistry registry){//方法 1.注册拦截类,拦截全部请求registry.addInterceptor(new Interceptor1());//方法 2.指定地址拦截//通配符:* :一层字符 **:多层字符registry.addInterceptor(new Interceptor1()).addPathPatterns("/product/**");//方法 3.排除拦截registry.addInterceptor(new Interceptor1()).addPathPatterns("/user/***").excludePathPatterns("/user/data1");//如果有多个拦截类优先级如何?registry.addInterceptor(new Interceptor1())//先声明优先级高,先进后出.addPathPatterns("/product/**");registry.addInterceptor(new Interceptor2())//后声明优先级低,后进先出.addPathPatterns("/product/**");
}

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

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

相关文章

基于单片机的家用安防报警系统设计

本设计基于STM32F103单片机作为主控,通过DS18B20温度传感器和MQ烟雾传感器对家庭环境的温度和烟雾浓度进行检测实现火灾预警的设计要求,当检测数据异常时激发报警提示。系统采用红外传感器对家庭环境中是否有盗贼进入实现检测,当出现异常情况…

机器学习的应用领域

机器学习在许多领域有广泛的应用,下面列出了一些主要的应用领域及其典型应用: 1. 图像识别 人脸识别:用于解锁手机、自动标记照片、监控安全系统。物体识别:应用于自动驾驶汽车、机器人、医疗影像分析中,帮助机器理解…

【python】判断语句

前言 进行逻辑判断,是生活中常见的行为。同样,在程序中,进行逻辑判断也是最为基础的功能。 #mermaid-svg-BxDAgUkFvXJU7u3K {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-BxDAg…

面试经典 150 题:力扣88. 合并两个有序数组

每周一道算法题启动 题目 【题目链接】 【解法一】合并后排序 排序后的数组自动省略0的数字&#xff0c;又学到了 class Solution { public:void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {//合并两个数组后排序for(int i0; i<…

计算机网络详解:发展史、TCP/IP协议、网络通信与应用开发全流程

文章目录 1. 计算机网络的发展史1.1 初期阶段&#xff1a;网络的萌芽&#xff08;1960年代&#xff09;1.2 第二阶段&#xff1a;TCP/IP协议的引入&#xff08;1970-1980年代&#xff09;1.3 第三阶段&#xff1a;互联网的普及与商业化&#xff08;1990年代&#xff09;1.4 现代…

线性跟踪微分器TD详细测试(Simulink 算法框图+CODESYS ST+博途SCL完整源代码)

1、ADRC线性跟踪微分器 ADRC线性跟踪微分器(ST+SCL语言)_adrc算法在博途编程中scl语言-CSDN博客文章浏览阅读784次。本文介绍了ADRC线性跟踪微分器的算法和源代码,包括在SMART PLC和H5U平台上的实现。文章提供了ST和SCL语言的详细代码,并讨论了跟踪微分器在自动控制中的作用…

基于python+django+vue的电影数据分析及可视化系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码 精品专栏&#xff1a;Java精选实战项目…

【一句话点破】【C++重要题目】基类与派生类的成员变量值被对象调用的结果(二)

【一句话点破】基类/派生类的成员变量由哪个对象初始化的&#xff0c;哪个对象调用该成员变量时就用由它初始化的值 [尤其找准是基类对象or派生类对象的值] 【重要例题】15浙工大卷二读程序5题 可运行代码如下 #include "bits/stdc.h" #include<iostream> u…

DataGemma:谷歌大模型

诸神缄默不语-个人CSDN博文目录 DataGemma是谷歌出的大模型&#xff0c;是gemma 2的升级版&#xff0c;主要亮点是基于检索解决幻觉问题。 在huggingface和kaggle上均可下载模型权重。 检索数据源是Google’s Data Commons知识图谱。 官方博客&#xff1a;https://blog.googl…

个人计算机与网络的安全

关于 wifi 大家都知道 wifi 已经使用了 wpa3 非常安全 但很多人不知道 pin 和 wps 这两项有漏洞 我发现很多用户都简单设置了这两项 他们的设置 使他们的网络出现了漏洞 关于 国产的 linux 老实说全是漏洞 默认开启 很多服务 但初始化的设置都有漏洞 关于 系统安全 老…

通往AGI的皇冠:逻辑推理能力

文章来自新浪微博机器学习团队 AI Lab 负责人张俊林&#xff0c;OpenAI发布新模型o1之后的一些观点&#xff0c;很有启发&#xff1a; GPT 4o本质上是要探索不同模态相互融合的大一统模型应该怎么做的问题&#xff0c;对于提升大模型的智力水平估计帮助不大&#xff1b;而o1本…

learn C++ NO.18——多态

什么是多态&#xff1f; 多态是C面向对象编程中的一个核心概念&#xff0c;它允许程序在执行过程中&#xff0c;根据对象的实际类型来调用适当的函数。多态性主要通过继承和虚函数来实现&#xff0c;这使得代码更加灵活和可扩展。多态的条件如下&#xff1a;1、调用函数是重写…

[翟旭发射器]python-推导式-列表list表达式练习

# 简单的列表生成 numbers00[x for x in range(1,11)] print(numbers00) # 带条件的列表生成 numbers01[x for x in range(1,11) if x%20] print(numbers01) # 带表达式的列表生成 numbers10[x**2 for x in range(1,11)] print(numbers10) # 嵌套循环的列表生成 coordinates[(x…

LeetCode 210. 课程表 II

LeetCode 210. 课程表 II 现在你总共有 numCourses 门课需要选&#xff0c;记为 0 到 numCourses - 1。给你一个数组 prerequisites &#xff0c;其中 prerequisites[i] [ai, bi] &#xff0c;表示在选修课程 ai 前 必须 先选修 bi 。 例如&#xff0c;想要学习课程 0 &#x…

YUM降级基本用法

YUM降级基本用法 当包没有任何依赖关系时,降级是非常简单的。 YUM降级(没有依赖) yum downgrade package例: 复制代码 YUM降级(有依赖) 对于具有依赖关系的包,YUM降级更加困难。YUM降级不会自动解决依赖关系,因此必须手动完成。 YUM降级包和依赖关系 yum downgrad…

基于SpringBoot+Vue+MySQL的美食点餐管理系统

系统展示 用户前台界面 管理员后台界面 系统背景 在数字化快速发展的今天&#xff0c;餐饮行业也迎来了转型升级的重要机遇。传统餐饮管理方式面临效率低下、顾客体验不佳等问题。为此&#xff0c;开发一款基于SpringBootVueMySQL架构的美食点餐管理系统显得尤为重要。该系统旨…

问:JAVA中唤醒阻塞的线程有哪些?

在Java中&#xff0c;唤醒阻塞线程的方法有多种&#xff0c;以下是常见的线程唤醒方法。 唤醒方法 使用notify()和notifyAll()方法 synchronized (obj) {obj.notify(); // 唤醒单个等待线程// obj.notifyAll(); // 唤醒所有等待线程 }使用interrupt()方法 Thread thread n…

在 expressjs 中MySQL 的datetime类型,怎么插入数据

在Express.js中&#xff0c;当你需要与MySQL数据库交互并插入DATETIME类型的数据时&#xff0c;你通常会使用某种Node.js的MySQL客户端库&#xff0c;如mysql、mysql2或mysql2/promise&#xff08;后者提供了Promise API的支持&#xff0c;使得你可以使用async/await&#xff0…

在MySQL中,要查询所有用户及其权限,您可以使用以下命令:

文章目录 1、查询所有用户1.1、登录数据库1.2、select user,host from mysql.user; 2、查看用户的权限 1、查询所有用户 1.1、登录数据库 [rootlocalhost ~]# docker exec -it spzx-mysql /bin/bash rootab66508d9441:/# mysql -uroot -p123456 mysql: [Warning] Using a pas…

网络层协议——IP

目录 IP层 IP报文格式 IP的理解 运营商 分片与组装 IP层 传输层的TCP或者UDP协议能直接将数据发送到网络中吗&#xff1f;显然不能&#xff0c;封装完的TCP报文还是需要向下交付&#xff0c;经过协议栈&#xff0c;从链路层发送到物理层也就是网路中。 那么tcp做了什么工…