广州市网站建设 合优苏州制作网站的公司哪家好

pingmian/2025/10/9 1:37:15/文章来源:
广州市网站建设 合优,苏州制作网站的公司哪家好,服务器价格购买价格表,集团网站建设服务1. 前言 在平时的开发工作中#xff0c;我们通常需要对接口进行参数格式验证。当参数个数较少#xff08;个数小于3#xff09;时#xff0c;可以使用if ... else ...手动进行参数验证。当参数个数大于3个时#xff0c;使用if ... else ...进行参数验证就会让代码显得臃肿…1. 前言 在平时的开发工作中我们通常需要对接口进行参数格式验证。当参数个数较少个数小于3时可以使用if ... else ...手动进行参数验证。当参数个数大于3个时使用if ... else ...进行参数验证就会让代码显得臃肿这个时候推荐使用注解来进行参数验证。 在Java中注解Annotation是一种代码标记通常用于提供元数据这些元数据可以被编译器或运行时环境使用。这些注解通常用于框架和库中以实现更加灵活和可配置的代码。 2. 常用注解描述 NotNull 描述标记一个值不能为null。示例 public class User { NotNull private String name; // ... }NotEmpty 描述标记一个集合如List、Set等不能为空。示例 public class User { NotEmpty private ListString interests; // ... }NotBlank 描述标记一个字符串不能为空白即null、空字符串或只包含空格。示例 public class User { NotBlank private String username; // ... }Size 描述标记一个字符串或集合的大小必须在指定的范围内。示例 public class User { Size(min 2, max 50) private String username; // ... }Min 和 Max 描述标记一个数值必须在指定的最小值和最大值之间。示例 public class User { Min(18)Max(60) private int age; // ... }DecimalMin 和 DecimalMax 描述标记一个浮点数或双精度数必须在指定的最小值和最大值之间。示例 public class User { DecimalMin(0.01) DecimalMax(100.00) private double discount; // ... }Digits 描述标记一个整数或浮点数必须在指定的精度和总数值范围内。示例 public class User { Digits(integer 3, fraction 2) // 总长度为53位整数2位小数。例如123.45 是合法的。 private BigDecimal amount; // ... }Pattern 描述标记一个字符串必须匹配指定的正则表达式。通常用于验证输入格式。例如电子邮件地址、电话号码格式等。Pattern注解在javax.validation.constraints包中。Pattern(regexp “^\w{5,}$”)表示长度在5-20之间由字母、数字、下划线组成的字符串。Pattern注解用于类字段上例如用户密码字段。示例 public class User { Pattern(regexp ^[a-zA-Z0-9]*$) private String password; //... } Email 描述标记一个字符串必须是一个有效的电子邮件地址。示例 Email private String emailAddress;AssertTrue 和 AssertFalse 描述标记一个布尔值必须为true或false。示例 AssertTrue private boolean isValid;AssertFalse private boolean isNotValid;Future 描述标记一个日期必须是在未来某个时间点之后。示例 Future private Date expiryDate;Past 描述标记一个日期必须是在过去某个时间点之前。示例 Past private Date purchaseDate;这些注解通常与验证框架如Hibernate Validator一起使用以在运行时验证对象的属性。 3. 注解使用 在项目的pom.xml文件中添加如下依赖 dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-validation/artifactId/dependency在实体类中使用上述注解代码如下 package com.yyqq.demo.entity;import lombok.Data; import javax.validation.constraints.*;Data public class User {NotBlank(message 用户姓名不能为空)private String name;NotBlank(message 密码不能为空)Size(min 6, message 密码长度不能少于6位)private String password;Min(value 0, message 年龄不能小于0岁)Max(value 150, message 年龄不应超过150岁)private Integer age;Pattern(regexp ^((13[0-9])|(15[^4])|(18[0-9])|(17[0-9])|(147))\d{8}$, message 手机号格式不正确)private String phone; }控制器类使用验证代码如下 import com.yyqq.demo.util.Result; import com.yyqq.demo.entity.User; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController;import javax.validation.Valid;RestController RequestMapping(/user) public class UserController {PostMapping(/add)public Result add(Valid RequestBody User user) {return Result.success(user);} }Result是封装结果的一个类用于返回统一的结果代码如下 package com.yyqq.demo.util;import lombok.Data; import java.io.Serializable;Data public class ResultT implements Serializable {private int code;private boolean success;private T data;private String msg;private Result(int code, T data, String msg) {this.code code;this.data data;this.msg msg;this.success code 200;}public static T ResultT sucess(T data) {return new Result(200, data, null);}public static T ResultT fail(String msg) {return new Result(500, null, msg);} }定义全局异常处理类我们在全局异常处理类中使用ExceptionHandler捕获BindException异常获取参数验证异常信息最后返回统一的异常结果格式代码如下 package com.yyqq.demo.util;import com.yyqq.demo.util.Result; import org.springframework.validation.BindException; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.RestControllerAdvice;RestControllerAdvice public class GlobalExceptionHandler {ExceptionHandler(BindException.class)public Result handleError(BindException e) {BindingResult bindingResult e.getBindingResult();return Result.fail(bindingResult.getFieldError().getDefaultMessage());} }4. 使用分组验证 用于插入记录时的分组验证代码如下 package com.yyqq.demo.interceptor; import javax.validation.groups.Default;public interface Insert extends Default { } 用于更新记录时的分组验证代码如下 package com.yyqq.demo.interceptor; import javax.validation.groups.Default;public interface Update extends Default { }在实体类中进行分组标记代码如下 package com.yyqq.demo.entity;import lombok.Data; import javax.validation.constraints.*;Data public class User {NotBlank(groups {Insert.class, Update.class})NotBlank(message 用户姓名不能为空)private String name;NotBlank(message 密码不能为空)Size(min 6, message 密码长度不能少于6位)private String password;Min(value 0, message 年龄不能小于0岁)Max(value 150, message 年龄不应超过150岁)private Integer age;NotBlank(groups {Insert.class, Update.class})Pattern(regexp ^((13[0-9])|(15[^4])|(18[0-9])|(17[0-9])|(147))\\d{8}$, message 手机号格式不正确)private String phone; }控制器类使用分组验证 package com.yyqq.demo.controller;import com.yyqq.demo.util.Result; import com.yyqq.demo.entity.User; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController;import javax.validation.Valid;RestController RequestMapping(/user) public class UserController {PostMapping(/add)public Result add(Validated(Insert.class) RequestBody User user) {return Result.success(user);}PostMapping(/update)public Result update(Validated(Update.class) RequestBody User user) {return Result.success(user);} }5. 自定义验证注解 除了框架自带的注解平时的工作中可能需要我们自定义验证注解处理特定的业务需求。 定义注解 package com.yyqq.demo.validate;import javax.validation.Constraint; import javax.validation.Payload; import java.lang.annotation.Documented; import java.lang.annotation.Retention; import java.lang.annotation.Target;import static java.lang.annotation.ElementType.*; import static java.lang.annotation.RetentionPolicy.RUNTIME;Documented Retention(RUNTIME) Constraint(validatedBy {PhoneValidator.class}) Target({METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER, TYPE_USE}) public interface Phone {String message() default 手机号格式错误;Class?[] groups() default {};Class? extends Payload[] payload() default {}; } 定义验证器类 package com.yyqq.demo.validate;import javax.validation.ConstraintValidatorContext; import javax.validation.ConstraintValidator; import java.util.regex.Pattern;public class PhoneValidator implements ConstraintValidatorPhone, String {private static final String REGEX ^((13[0-9])|(15[^4])|(18[0-9])|(17[0-9])|(147))\\d{8}$;Overridepublic boolean isValid(String s, ConstraintValidatorContext context) {boolean result false;try {result Pattern.matches(REGEX, s);} catch (Exception e) {System.out.println(验证手机号格式时发生异常异常信息 e);}return result;} }实体类使用注解 package com.yyqq.demo.validate;public class User {//其他属性...// Pattern(regexp ^((13[0-9])|(15[^4])|(18[0-9])|(17[0-9])|(147))\\d{8}$, message 手机号格式不正确)Phoneprivate String phone; } 6. Valid与Validated的区别 用于参数校验的注解通常有两个Valid和Validated。它们的区别有如下几点 区别ValidValidated来源Valid是Java标准注解Validated是Spring框架定义的注解。是否支持分组验证不支持支持使用位置构造函数、方法、方法参数、成员属性类、方法、方法参数不能用于成员属性是否支持嵌套校验支持不支持

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

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

相关文章

电子商务网站数据库建设新沂建设网站

需要对excel先筛选,后对“完成数量”进行求和。初始表格如下: 一、选中表内任意单元格,按ctrlshiftL,开启筛选 二、根据“部门”筛选,比如选择“一班” 筛选完毕后,选中上图单元格,然后按alt后&…

上海网站建设框架图wordpress如何修改自己的网页

欧拉心算 推式子 ∑i1n∑j1nϕ(gcd(i,j))∑d1nϕ(d)∑i1nd∑j1nd[gcd(i,j)1]∑d1nϕ(d)∑k1ndμ(k)(⌊nkd⌋)2另tkd∑t1n(⌊nt⌋)2∑d∣tϕ(d)μ(td)另f(n)∑d∣nϕ(d)μ(nd)我们考虑如何得到这个函数的前缀和,显然这是一个积性函数有如下性质f(1)1f(p)ϕ(1)μ(p)ϕ…

上海市工程建设标准化信息网站阿里指数查询

工业交换机常见的硬件故障主要是由于受到供电电源、室内温度、室内湿度、电磁干扰、静电等机房环境的影响,造成工业交换机电源、背板、模块、端口等部件出现故障。具体可以分为以下几类。 1.电力供应故障: 由于外部供电不稳定、电源线路老化或雷击等原因…

私人做网站要多少钱wap游戏入口

取名10行代码看懂红楼梦,是将介绍使用python代码来读红楼梦获取其主要人物。这里的思想就是词频统计,通过分析红楼梦小说文字中出现最多的词语,来概括说明红楼梦的核心人物和事情。实际上如果你能跟着往下看,就开始进入了自然语言…

网站关键词分析工具免费制作照片的网站

后续完善转载于:https://www.cnblogs.com/fight-tao/p/4849167.html

装修网网站建设网站的类别

数据中心概要与传统建筑空间相比,数据中心散热密度大,单位面积散热量可达传统办公区域的40倍以上,且越来越呈现集中化、大型化的趋势;同时,设备的安全性需求提高了对内部空调温湿度和洁净度的要求,数据中心…

青浦做网站价格网站建设公司星海网络

会计基础模拟练习一(3) 下周一18号会计从业资格考试就要报名了,本人重点看的是会计基础和会计电算化,做了一下测试题,五十多分,较之前有了一些长进.很多之前重点复习的章节有了明显的提升,像后面的几章没怎么看,出错的概率就大大的提升了. 我觉得这个考试…

变化型网页网站有哪些网页设计页面设计

目录 指令 指令修饰符 按键修饰符 ​编辑 v-model修饰符 事件修饰符 v-bind对于样式操作的增强 操作class 对象 数组 操作style v-model应用于其他表单元素 computed计算属性 概念 基础语法 ​编辑 计算属性vs方法 computed计算属性 作用 语法 缓存特性 m…

大数据营销网站站长工具查询ip地址

目录 常用算法 正则表达式 常用算法 double c qAbs(a),函数 qAbs() 返回 double 型数值 a 的绝对值 double max qMax(b,c),函数 qMax() 返回两个数值中的最大值 int bnqRound(b),返回一个与浮点数最接近的整数值(四舍五入) int cn q…

静安微信手机网站制作手机上怎么做能打开的网站吗

文章目录 **一、技术背景与应用场景****为何使用状态模式?****典型应用场景包括但不限于:** **二、状态模式定义与结构****三、使用步骤举例****四、优缺点分析****总结** 一、技术背景与应用场景 状态模式是一种行为设计模式,用于处理一个对…

安庆什么网站好小事做网站建设 销售人员

本章分支结构的学习内容如下: 三、C语言中的分支与循环—if语句 (1) 三、C语言中的分支与循环—关系操作符 (2) 三、C语言中的分支与循环—条件操作符 与逻辑操作符(3) 三、C语言中的分支与循环—switch语句(4)分支结构 完 本章循环结…

贵州建设厅网站官网网站建设工作策划书

持续集成是一种开发实践,它倡导团队成员需要频繁的集成他们的工作,每次集成都通过自动化构建(包括编译、构建、自动化测试)来验证,从而尽快地发现集成中的错误。让正在开发的软件始终处于可工作状态,让产品…

买男装最好的购物网站网站防注入

小张是一位网络安全技术测试员,最近他接到了一个头疼的任务,那就是评估公司系统的安全性,因此他前来咨询,在得知SOCKS5代理IP可以帮他之后,他不禁产生疑问,这是什么原理?其实和小张一样的朋友不…

如何做谷歌优化seo营销方案

递归 思路: 递归子问题: 确认节点 p、q 是否在节点 root 子树中: lson isChild(root->left, p, q);rson isChild(root->right, p, q);在 root 子树中的条件是: 在左子树中、或者在右子树中、或者 p/q 就是当前节点&#…

文化馆网站建设解决方案深圳专业网站设计公司

1. 题目 在数组中的两个数字&#xff0c;如果前面一个数字大于后面的数字&#xff0c;则这两个数字组成一个逆序对。输入一个数组&#xff0c;求出这个数组中的逆序对的总数。 示例 1: 输入: [7,5,6,4] 输出: 5限制&#xff1a; 0 < 数组长度 < 50000来源&#xff1a;力…

网站数据库如何做秦皇岛网站排名

转载于:https://www.cnblogs.com/phplearnings/p/3650849.html

杭州外贸网站多少钱seo首页排名优化

下一代的社区系统&#xff0c;为未来而构建简介Symphony([ˈsɪmfəni]&#xff0c;n.交响乐)是一个现代化的社区平台&#xff0c;因为它&#xff1a;实现了面向内容讨论的论坛实现了面向知识问答的社区包含了面向用户分享、交友、游戏的社交网络100% 开源动机很多社区论坛系统…

企业为什么做网站系统新乡网站建设哪家公司好

https://blog.csdn.net/Dorothy1224/article/details/79280591 https://blog.csdn.net/z_z_h_0/article/details/85119163

常用网站缩略图自定义搭建服务器做网站

三个标红的需要前面加上UNSAFE_ 三个常用的组件

免费模板网站崇文企业网站建设公司

mkdir命令 mkdir&#xff08;英文全拼&#xff1a;make directory&#xff09;命令用于创建目录。 著者 作者&#xff1a;David MacKenzie。 mkdir命令 -Linux手册页 语法 mkdir [参数] [文件名] 命令选项及作用 执行令 &#xff1a; mkdir --help 执行命令结果 参数 …