SpringMVC-05

Spring MVC拦截器是在请求到达处理器前或返回客户端前执行的组件,它可以用于拦截和处理请求,实现一些通用的功能。
Spring MVC拦截器可以实现的功能包括:

  1. 登录验证:拦截所有请求,检查用户是否已登录,未登录则跳转到登录页面。
  2. 权限验证:拦截请求,检查用户是否拥有访问权限,没有权限则跳转到错误页面。
  3. 日志记录:记录请求的参数、处理时间等信息,用于分析和排查问题。
  4. 数据预处理:对请求参数进行一些预处理,比如格式化日期、转换数据类型等。
  5. 异常处理:拦截处理过程中出现的异常,进行统一的异常处理。

要使用Spring MVC拦截器,需要实现HandlerInterceptor接口,并注册到Spring的上下文中。拦截器可以通过配置匹配的URL路径、排除的URL路径等条件来决定对哪些请求进行拦截。

拦截器的执行顺序由配置的顺序决定,可以通过实现Ordered接口来指定拦截器的顺序。在拦截器的preHandle方法中,可以根据需要进行请求的拦截或处理;在postHandle方法中可以对处理结果做一些处理;在afterCompletion方法中可以进行一些清理工作。

拦截器是Spring MVC框架提供的一种灵活、可扩展的机制,可以在请求处理的各个阶段进行拦截和处理。它可以帮助我们实现一些通用的功能,代码重用性高,提高了开发效率。

拦截器 SpringMVC
过滤器 javaWeb

拦截器使用:1.创建拦截器类
2.添加拦截器
多个拦截器,先声明的优先级高

public class MyInterceptor implements HandlerInterceptor {//执行handler之前   调用的拦截方法 如登录保护 权限处理等@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {System.out.println("request:"+request+" response:"+response+" handler"+handler);return true;}//执行handler之后   触发的方法   如铭感词汇检查等@Overridepublic void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {System.out.println("MyInterceptor.postHandle");}//整体处理完毕后   触发的方法@Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {System.out.println("MyInterceptor.afterCompletion");}
}@Overridepublic void addInterceptors(InterceptorRegistry registry) {//拦截全部请求registry.addInterceptor(new MyInterceptor());}//方案2.指定地址拦截registry.addInterceptor(new MyInterceptor()).addPathPatterns("/user/data");		// 模糊地址:/user/*	    //*代表任意一层     **代表任意多层

在Spring MVC中,我们可以使用JSR 303(Bean Validation)注解来进行参数校验。JSR 303定义了一组标准的注解,可以用于对Java Bean的属性进行验证。
常用的JSR 303注解包括:
@NotNull:表示属性不能为null。
@NotEmpty:表示字符串不能为空,集合不能为空。
@NotBlank:表示字符串不能为空,且长度必须大于0。
@Size:表示属性的大小必须在指定的范围内。
@Min:表示属性的最小值。
@Max:表示属性的最大值。
@Pattern:表示属性必须匹配指定的正则表达式。
@Email:表示属性必须是一个有效的电子邮件地址。

导入依赖

        <dependency><groupId>org.hibernate</groupId><artifactId>hibernate-validator</artifactId><version>8.0.0.Final</version></dependency><dependency><groupId>org.hibernate</groupId><artifactId>hibernate-validator-annotation-processor</artifactId><version>8.0.0.Final</version></dependency>

步骤:1.在实体类中添加注解

public class User1 {@NotBlankprivate String name;        //不为空@Length(min=6)private String password;    //长度大于6位@Min(1)private int age;            //>=1@Emailprivate String email;       //邮箱格式@Pastprivate Date birthday;      //过去时间
}

2.handler(@Validated 实体类 实体类对象)

@RestController
@RequestMapping("user1")
public class UserController1 {@PostMapping("register")public Object register(@Validated @RequestBody User1 user1, BindingResult result){//BindingResult 获取错误,绑定错误,不会直接返回if(result.hasErrors()){Map data=new HashMap();data.put("code",400);data.put("msg","参数错误");return data;}return user1;}
}

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

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

相关文章

网页设计(九)JavaScript基础应用

一、网页中文字的字号选择性改变 单击前初始状态页面 单击“中”链接后页面 文字素材&#xff1a;   JavaScript是一种能让你的网页更加生动活泼的程式语言&#xff0c;也是目前网页中设计中最容易学又最方便的语言。你可以利用JavaScript轻易的做出亲切的欢迎讯息、漂亮的…

web前端第二次

第一题&#xff1a; <!DOCTYPE html> <html> <head><title>计算奇数和</title> </head> <body><label for"input">请输入一个正整数&#xff1a;</label><input type"number" id"input&qu…

影响CSGO搬砖饰品价格上涨和下跌的原因有哪些

到底哪些情况下CSGO饰品价格会涨&#xff0c;哪些情况会跌&#xff0c;下面是一个混迹steam平台多年的老油条&#xff0c;一点个人见解&#xff0c;不喜吻喷。 首先&#xff0c;CSGO饰品的交易是从市场进行的&#xff0c;市场终究是市场&#xff0c;是自由买卖的&#xff0c;必…

VMware Vsphere 日志:用户 dcui@127.0.01已以vMware-client/6.5.0 的身份登录

一、事件截图&#xff1a; 二、解决办法 原因&#xff1a; 三、解决办法 1.开启锁定模式 2.操作 1、从清单中选择您的 ESXi 主机&#xff0c;然后转至管理 > 设置 > 安全配置文件&#xff0c;然后单击锁定模式的编辑按钮 2、在打开的锁定模式窗口中&#xff0c;选中启…

【Python】P4 异常处理

Python 异常处理 Python 中对于异常的处理主要通过 try-except、finally 和 raise 语句实现。 try-except 语句&#xff1a; 尝试执行一段代码&#xff0c;如果该代码块引发了异常&#xff0c;那么将跳过 try 代码块中剩余的代码&#xff0c;转而执行相应的 except 子句。 …

云服务器 云服务器概述-产品简介-文档中心-腾讯云

腾讯云服务器入门教程包括云服务器CPU内存带宽配置选择&#xff0c;选择云服务器CVM或轻量应用服务器&#xff0c;云服务器创建后重置密码、远程连接、搭建程序环境等&#xff0c;腾讯云服务器网txyfwq.com分享从0到1腾讯云服务器入门教程&#xff1a; 腾讯云服务器入门教程 …

C++中的引用及指针变量

目录 1.1 C中的引用 1.2 C中的指针变量&#xff08;pointer&#xff09; 1.1 C中的引用 C中的引用&#xff08;reference&#xff09;是一种特殊的变量&#xff0c;它是某个已存在变量的另一个名字。引用变量与指针变量类似&#xff0c;但引用变量必须在声明时进行初始化&…

CSDN 年度总结|知识改变命运,学习成就未来

欢迎来到英杰社区&#xff1a; https://bbs.csdn.net/topics/617804998 欢迎来到阿Q社区&#xff1a; https://bbs.csdn.net/topics/617897397 &#x1f4d5;作者简介&#xff1a;热爱跑步的恒川&#xff0c;致力于C/C、Java、Python等多编程语言&#xff0c;热爱跑步&#xff…

Python操作PDF的全面指南

引言&#xff1a; 在现代数字化时代&#xff0c;PDF&#xff08;Portable Document Format&#xff09;已成为一种常见的文档格式。无论是在工作中还是在学习中&#xff0c;我们经常需要处理和操作PDF文件。幸运的是&#xff0c;Python提供了许多强大的库和工具&#xff0c;可以…

「许战海矩阵战略洞察」吉香居给调味品企业带来的战略启示

引言&#xff1a;吉香居通过实施份额化战略和打造形象产品&#xff0c;在调味品行业中取得了成功。但品牌结构需要调整&#xff0c;需要将子品牌整合到吉香居主品牌下&#xff0c;共同提升品牌势能。此外&#xff0c;企业需保持主品牌竞争战略&#xff0c;以实现长期稳定的高速…

transfomer中正余弦位置编码的源码实现

简介 Transformer模型抛弃了RNN、CNN作为序列学习的基本模型。循环神经网络本身就是一种顺序结构&#xff0c;天生就包含了词在序列中的位置信息。当抛弃循环神经网络结构&#xff0c;完全采用Attention取而代之&#xff0c;这些词序信息就会丢失&#xff0c;模型就没有办法知…

进阶Docker4:网桥模式、主机模式与自定义网络

目录 网络相关 子网掩码 网关 规则 docke网络配置 bridge模式 host模式 创建自定义网络(自定义IP) 网络相关 IP 子网掩码 网关 DNS 端口号 子网掩码 互联网是由许多小型网络构成的&#xff0c;每个网络上都有许多主机&#xff0c;这样便构成了一个有层次的结构。 IP 地…

python实现屏幕颜色获取

为了实时监听鼠标移动并输出鼠标当前位置的颜色值&#xff0c;你可以结合使用pyautogui和pynput库。pynput库可以用来监听鼠标事件&#xff0c;而pyautogui则可以用来获取鼠标当前位置的屏幕颜色。 首先&#xff0c;你需要安装这两个库&#xff08;如果尚未安装&#xff09;&a…

FreeBSD上安装mysql数据库

安装前提 1、使用pkg安装mysql有个前提FreeBSD版本12.2及以上。 2、内存最好是8GB及以上 安装 $ pkg search mysql …… mysql80-client-8.0.35 Multithreaded SQL database (client) mysql80-server-8.0.35 Multithreaded SQL database (server) mysql81…

SpringAOP-说说 Spring AOP 和 AspectJ AOP 区别

Spring AOP Spring AOP 属于运行时增强&#xff0c;主要具有如下特点&#xff1a; 基于动态代理来实现&#xff0c;默认如果使用接口的&#xff0c;用 JDK 提供的动态代理实现&#xff0c;如果是方法则使用 CGLIB 实现Spring AOP 需要依赖 IOC 容器来管理&#xff0c;并且只能…

浅谈安科瑞铁塔/基站电力监控解决方案

I.背景信息&#xff1a; 2020年5G元年&#xff0c;通信行业承蓬勃发展之态&#xff0c;各大运营商和铁塔集团在布局新一代通讯基站。基站用电量不断上升&#xff0c;通信基站智能化电力监控及节能管理已成为各运营商企业的研究方向。 而同时&#xff0c;目前铁塔基站电力使用…

靶机-basic_pentesting_2

basic_pentesting_2 arp-scan -l查找靶机IP masscan 192.168.253.154 --ports 0-65535 --rate10000 端口扫描 nmap扫描nmap -T5 -A -p- 192.168.253.154 目录扫描80端口 http://192.168.253.154/development/dev.txt 2018-04-23: I’ve been messing with that struts stu…

面向Java开发者的ChatGPT提示词工程(10)

在ChatGPT的众多应用中&#xff0c;拼写检查和语法检查犹如璀璨的明珠&#xff0c;受到广大用户的热烈追捧。我对此深信不疑&#xff0c;且一直在实践中坚定不移。特别是在使用非母语的情况下&#xff0c;它的作用更为显著。接下来&#xff0c;让我们通过一些常见的拼写和语法问…

mipi协议

完成mipi信号通道分配后&#xff0c;需要生成与物理层对接的时序、同步信号&#xff1a; MIPI规定&#xff0c;传输过程中&#xff0c;包内是200mV、包间以及包启动和包结束时是1.2V&#xff0c;两种不同的电压摆幅&#xff0c;需要两组不同的LVDS驱动电路在轮流切换工作&#…

数据集成时表模型同步方法解析

01 背景介绍 数据治理的第一步&#xff0c;也是数据中台的一个基础功能 — 即将来自各类业务数据源的数据&#xff0c;同步集成至中台 ODS 层。业务数据源多种多样&#xff0c;单单可能涉及到的主流关系型数据库就有近十种。功能更加全面的数据中台通常还具有对接非关系型数据…