当前位置: 首页 > news >正文

网站开发技术期末考试试题网站竞价

网站开发技术期末考试试题,网站竞价,小程序需要icp许可证吗,jpress wordpress对比Springboot参数分组校验 文章目录 Springboot参数分组校验简介代码准备单个或多个参数的校验非 JSON 格式的对象参数校验JSON 格式的对象参数校验Service 层校验项目地址 简介 Java API规范(JSR303)定义了Bean校验的标准validation-api#xff0c;但没有提供实现。hibernate …Springboot参数分组校验 文章目录 Springboot参数分组校验简介代码准备单个或多个参数的校验非 JSON 格式的对象参数校验JSON 格式的对象参数校验Service 层校验项目地址 简介 Java API规范(JSR303)定义了Bean校验的标准validation-api但没有提供实现。hibernate validation是对这个规范的实现并增加了校验注解如Email、Length等。 Spring Validation是对hibernate validation的二次封装用于支持spring mvc参数自动校验。本文基于 JDK21 和 springboot3.1.5 进行整理。 代码准备 参数校验对象以下实例都基于该对象进行。 package com.lzhch.practice.dto.req;import com.fasterxml.jackson.annotation.JsonFormat; import jakarta.validation.constraints.Email; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; import org.hibernate.validator.constraints.Length;import java.io.Serial; import java.io.Serializable; import java.util.Date;/*** 参数分组校验入参* p* author: lzhch* version: v1.0* date: 2023/11/20 15:36*/Data Builder NoArgsConstructor AllArgsConstructor public class ParamGroupValidatedReq implements Serializable {Serialprivate static final long serialVersionUID 1L;/*** 用户ID* 内部定义接口和统一定义接口任选其一即可*/// NotNull(message 用户id不能为空, groups ParamGroupValidated.Create.class)NotNull(message 用户id不能为空) // Service 层不进行分组校验// NotNull(message 用户id不能为空, groups ParamGroupValidatedReq.Save.class)private Long userId;/*** 用户名*/NotBlank(message 用户名不能为空)Length(max 20, message 用户名不能超过20个字符)private String username;/*** 手机号*/NotBlank(message 手机号不能为空)private String mobile;/*** 性别*/private String sex;/*** 邮箱*/NotBlank(message 联系邮箱不能为空)Email(message 邮箱格式不对)private String email;/*** 密码*/private String password;/*** 创建时间*/// Future(message 时间必须是将来时间)JsonFormat(pattern yyyy-MM-dd HH:mm:ss, timezone GMT8)private Date createTime;/*** 保存的时候校验分组*/public interface Save {}/*** 更新的时候校验分组*/public interface Update {}}分组接口 import jakarta.validation.groups.Default;/*** 新增参数校验接口* p* author: lzhch* version: v1.0* date: 2023/11/20 17:20*/public interface ParamGroupValidated {/*** 在声明分组的时候加上 extend javax.validation.groups.Default* 否则, 在你声明 Validated(Update.class)的时候, 就会出现你在默认没添加 groups {} 的时候* 校验组 Email(message 邮箱格式不对) 会不去校验, 因为默认的校验组是 groups {Default.class}.*/interface Create extends Default {}interface Update extends Default {}}全局异常捕捉参数校验报错分为 MethodArgumentNotValidException 和 ConstraintViolationException。 import jakarta.validation.ConstraintViolation; import jakarta.validation.ConstraintViolationException; import lombok.extern.slf4j.Slf4j; import org.springframework.validation.FieldError; import org.springframework.web.bind.MethodArgumentNotValidException; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.RestControllerAdvice;import java.util.Objects;/*** 全局异常处理* p* author: lzhch* version: v1.0* date: 2023/11/20 17:51*/Slf4j RestControllerAdvice public class GlobalExceptionHandler {/*** Controller 层参数校验** param methodArgumentNotValidException: Controller 层参数校验失败异常类型* return 统一封装的结果类, 含有代码code和提示信息msg* Author: lzhch 2023/11/21 15:13*/ExceptionHandler(MethodArgumentNotValidException.class)public String handleMethodArgumentNotValidException(MethodArgumentNotValidException methodArgumentNotValidException) {log.error(methodArgumentNotValidException.getMessage(), methodArgumentNotValidException);FieldError fieldError methodArgumentNotValidException.getBindingResult().getFieldError();if (Objects.isNull(fieldError)) {return methodArgumentNotValidException.getMessage();}return fieldError.getDefaultMessage();}/*** 捕获并处理未授权异常** param e: Service 层参数校验失败异常类型* return 统一封装的结果类, 含有代码code和提示信息msg* Author: lzhch 2023/11/21 15:13*/ExceptionHandler(ConstraintViolationException.class)public String handleConstraintViolationException(ConstraintViolationException e) {return String.join(;, e.getConstraintViolations().stream().map(ConstraintViolation::getMessageTemplate).toList());}}单个或多个参数的校验 比如根据 Id 查询、删除等无需封装成对象且无需使用 JSON 格式。 import com.alibaba.fastjson2.JSON; import com.lzhch.practice.dto.req.ParamGroupValidatedReq; import com.lzhch.practice.service.IParamGroupValidatedService; import com.lzhch.practice.validatedtype.ParamGroupValidated; import jakarta.annotation.Resource; import jakarta.validation.constraints.NotBlank; import lombok.extern.slf4j.Slf4j; import org.springframework.validation.annotation.Validated; 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;/*** 参数分组校验 controller* p* author: lzhch* version: v1.0* date: 2023/11/20 17:22*/Slf4j // 用于在 Controller 层的简单校验, 比如 simple 方法 Validated RestController RequestMapping(value validated/paramGroup) public class ParamGroupValidatedController {Resourceprivate IParamGroupValidatedService paramGroupValidatedService;/*** 简单校验* 必须在 Controller 上添加 Validated 注解* 指定 groups 可以进行分组校验*/GetMapping(value simple)public void simple(NotBlank(message username 不能是空的啊!!!, groups ParamGroupValidated.Create.class) String username) {log.info(result {}, username);}}非 JSON 格式的对象参数校验 Controller 和方法参数上需要添加 Validated 注解 对象里面增加相应类型的校验注解。 /*** 非 JSON 格式的对象校验* 使用 Validated 注解的 value 属性指定分组*/ GetMapping(value simple1) public void simple1(Validated ParamGroupValidatedReq paramGroupValidatedReq) {log.info(result {}, JSON.toJSONString(paramGroupValidatedReq)); }JSON 格式的对象参数校验 不需要在 Controller 上添加 Validated 注解 JSON 格式校验只需要增加 RequestBody 注解。 /*** 统一接口分组测试新增* 使用 Validated 注解的 value 属性指定分组*/ PostMapping(value create) public void create(RequestBody Validated(value ParamGroupValidated.Create.class) ParamGroupValidatedReq paramGroupValidatedReq) {log.info(result {}, JSON.toJSONString(paramGroupValidatedReq)); }Service 层校验 以上为在 Controller 里面进行的校验接下来是 Service 层的校验代码。 接口 在接口中必须添加 Valid 以及 NotBlank 等注解, 否则报错 package com.lzhch.practice.service;import com.lzhch.practice.dto.req.ParamGroupValidatedReq; import jakarta.validation.Valid; import jakarta.validation.constraints.NotBlank;/*** 分组校验接口* p* author: lzhch* version: v1.0* date: 2023/11/20 18:16*/public interface IParamGroupValidatedService {// 在接口中必须添加 Valid 以及 NotBlank 等注解, 否则报错/*** 字段校验*/void filedValidated(NotBlank(message 用户名不能为空) String username);/*** 不分组校验*/void create(Valid ParamGroupValidatedReq paramGroupValidatedReq);/*** 分组校验*/// Validated(value ParamGroupValidated.Create.class)void create1(Valid ParamGroupValidatedReq paramGroupValidatedReq);}实现类 必须给实现类添加 Validated 注解 import com.alibaba.fastjson2.JSON; import com.lzhch.practice.dto.req.ParamGroupValidatedReq; import com.lzhch.practice.service.IParamGroupValidatedService; import com.lzhch.practice.validatedtype.ParamGroupValidated; import jakarta.validation.Valid; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated;/*** 分组校验接口实现类* p* author: lzhch* version: v1.0* date: 2023/11/20 18:16*/Slf4j Service // 在接口上添加 Validated 注解, 对该类进行参数校验 Validated public class ParamGroupValidatedServiceImpl implements IParamGroupValidatedService {/*** 在方法的参数上可以直接使用 NotBlank 等注解*/Overridepublic void filedValidated(String username) {log.info(service username :{}, username);}/*** 不分组校验* 在方法上使用 Valid 注解, 采用默认分组(实体也不指定分组)* 注意:接口中方法参数必须要加 Valid 注解; 实现类中可加可不加** param paramGroupValidatedReq param* return: void* Author: lzhch 2023/11/21 14:56* Since: 1.0.0*/Overridepublic void create(Valid ParamGroupValidatedReq paramGroupValidatedReq) {log.info(service result :{}, JSON.toJSONString(paramGroupValidatedReq));}/*** 分组校验* 在不分组校验的基础上对方法添加使用 Validated 注解, 并指定分组* 注意:接口中方法参数必须要加 Valid 注解; Validated 可在接口中也可在实现类中; 不能只在实现类中添加两个注解** param paramGroupValidatedReq param* return: void* Author: lzhch 2023/11/21 14:55* Since: 1.0.0*/OverrideValidated(value ParamGroupValidated.Create.class)public void create1(ParamGroupValidatedReq paramGroupValidatedReq) {log.info(service result :{}, JSON.toJSONString(paramGroupValidatedReq));}}项目地址 SpringBoot3-Practice/ParamGroupValidated at main · lzhcccccch/SpringBoot3-Practice (github.com)
http://www.dnsts.com.cn/news/263905.html

相关文章:

  • 类似于凡科的网站ps做网站效果
  • 网站风格模板网页版qq邮箱登录入口电脑版
  • 想做网站怎么跟做网站的公司谈判济南软件制作
  • 诸城易讯网站建设服务中心邹城哪个公司做网站好
  • 顺德网站建设教程国家建设网资质查询
  • 灌南建设局网站专业微网站电话号码
  • 网站分类目录查询做网站会员登陆
  • 定制型网站制作公司什么是网站前台静态化
  • 网站5建设需要学什么时候开始现在流行做网站吗
  • 大神自己做的下载音乐的网站管理学习网站
  • 动漫设计有前途吗广告优化师工资一般多少
  • 网站上传服务器教程达县网站制作
  • php网站开发前景大连软件公司排行
  • 服务器网站源码在哪网页期末大作业
  • 俄罗斯国际空间站wordpress xiu主题最新版
  • 800折网站怎么做万网网站域名注册
  • 做网站先做uewordpress 教学视频
  • 企业网站优化电话电脑和手机都能浏览的网站开发
  • 多语言企业网站开发京东联盟网站建设电脑版
  • 公司设计网站建设永辉企业微信app下载安装
  • 网站 邮箱功能 设置高清做爰片免费观看网站
  • 网站搭建工作做网站步骤详解
  • 大庆公司做网站市场调研公司招聘
  • 创建公司网站 教程新沂网页定制
  • 龙华民治网站设计公司团队霸气logo标志图片
  • 搭建一个网站大概需要多少钱怎么给网站创建二维码
  • 做网站打广告做网站虚拟主机怎么选择
  • 做微网站的第三方平台有哪些国内软件开发公司排行
  • 网站建设发展.net 网站开发书籍
  • 网站开发的抓包系统开发步骤