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

南昌网站建设是什么意思如何选择适合的图像和照片

南昌网站建设是什么意思,如何选择适合的图像和照片,企业邮箱格式例子,ph域名网站https://www.jianshu.com/p/89a675b7c900 在日常开发写rest接口时#xff0c;接口参数校验这一部分是必须的#xff0c;但是如果全部用代码去做#xff0c;显得十分麻烦#xff0c;spring也提供了这部分功能,本文来探究一下如何实现 1.配置 spring-boot-starter-web包自动依… https://www.jianshu.com/p/89a675b7c900 在日常开发写rest接口时接口参数校验这一部分是必须的但是如果全部用代码去做显得十分麻烦spring也提供了这部分功能,本文来探究一下如何实现 1.配置 spring-boot-starter-web包自动依赖hibernate-validator不用再重复引入直接开搞 dependencygroupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-web/artifactId /dependency dependency groupIdorg.hibernate/groupId artifactIdhibernate-validator/artifactId version5.3.1.Final/version /dependency 声明一个bean注册到spring容器这个bean是一个容器后处理器会把校验的逻辑通过AOP织入有Validated注解的class具体可以看这个类的源码 这一步在springboot其实也不用做ValidationAutoConfiguration这个配置类自动帮我们做了 Beanpublic MethodValidationPostProcessor methodValidationPostProcessor(){ return new MethodValidationPostProcessor(); } 验证不通过会产生异常因为我们项目提供rest接口所以通过全局捕获异常然后转换为json给前台 ControllerAdvice public class GlobalExceptionHandler { /** * 用来处理bean validation异常 * param ex * return */ ExceptionHandler(ConstraintViolationException.class) ResponseBody public WebResult resolveConstraintViolationException(ConstraintViolationException ex){ WebResult errorWebResult new WebResult(WebResult.FAILED); SetConstraintViolation? constraintViolations ex.getConstraintViolations(); if(!CollectionUtils.isEmpty(constraintViolations)){ StringBuilder msgBuilder new StringBuilder(); for(ConstraintViolation constraintViolation :constraintViolations){ msgBuilder.append(constraintViolation.getMessage()).append(,); } String errorMessage msgBuilder.toString(); if(errorMessage.length()1){ errorMessage errorMessage.substring(0,errorMessage.length()-1); } errorWebResult.setInfo(errorMessage); return errorWebResult; } errorWebResult.setInfo(ex.getMessage()); return errorWebResult; } ExceptionHandler(MethodArgumentNotValidException.class) ResponseBody public WebResult resolveMethodArgumentNotValidException(MethodArgumentNotValidException ex){ WebResult errorWebResult new WebResult(WebResult.FAILED); ListObjectError objectErrors ex.getBindingResult().getAllErrors(); if(!CollectionUtils.isEmpty(objectErrors)) { StringBuilder msgBuilder new StringBuilder(); for (ObjectError objectError : objectErrors) { msgBuilder.append(objectError.getDefaultMessage()).append(,); } String errorMessage msgBuilder.toString(); if (errorMessage.length() 1) { errorMessage errorMessage.substring(0, errorMessage.length() - 1); } errorWebResult.setInfo(errorMessage); return errorWebResult; } errorWebResult.setInfo(ex.getMessage()); return errorWebResult; } } 这两个异常分别对应校验的两种使用方式 在方法里面校验在bean对象里面校验经过测试以上两种形式的数据验证不仅仅对controller层有用在service层也行,只要这个类在spring ioc容器里面2.使用 2.1常用校验注解 AssertFalse 校验false AssertTrue 校验true DecimalMax(value,inclusive) 小于等于value inclusivetrue,是小于等于 DecimalMin(value,inclusive) 与上类似 Max(value) 小于等于value Min(value) 大于等于value NotNull 检查Null Past 检查日期 Pattern(regex,flag) 正则 Size(min, max) 字符串集合map限制大小 Valid 对po实体类进行校验 这篇文章介绍的注解更全一点 2.2在方法参数上使用 Controller Validated public class ValidationController {GetMapping(/validate1) ResponseBody public String validate1( Size(min 1,max 10,message 姓名长度必须为1到10)RequestParam(name) String name, Min(value 10,message 年龄最小为10)Max(value 100,message 年龄最大为100) RequestParam(age) Integer age, Future RequestParam(birth)DateTimeFormat(pattern yyyy-MM-dd hh:mm:ss) Date birth){ return validate1; } } 注意类名需要加注解Validated校验失败会抛出ConstraintViolationException异常然后我们在全局异常捕获类捕获这个异常返回给前台对应的错误json 2.3在bean内属性上使用 给model类增加校验注解 public class User { Size(min 1,max 10,message 姓名长度必须为1到10) private String name; NotEmpty private String firstName; Min(value 10,message 年龄最小为10)Max(value 100,message 年龄最大为100) private Integer age; Future JSONField(formatyyyy-MM-dd HH:mm:ss) private Date birth; ...getter setter } 在controller对应User实体前增加Valid注解 PostMapping(/validate2) ResponseBody public User validate2(Valid RequestBody User user){ return user; } 3.扩展 除了默认提供的校验注解外我们可以定义自己的校验注解 3.1.创建约束注解类 Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER }) Retention(RUNTIME) Documented Constraint(validatedBy { HandsomeBoyValidator.class}) public interface HandsomeBoy { String message() default 盛超杰最帅; String name(); Class?[] groups() default { }; Class? extends Payload[] payload() default {}; } 注意:message用于显示错误信息这个字段是必须的groups和payload也是必须的Constraint(validatedBy { HandsomeBoyValidator.class})用来指定处理这个注解逻辑的类 一开始写了这个自定义注解和验证类发现没有生效最后发现是Constraint这个注解里的类没有配置还跟了很多源码蛋疼总的来讲这个配置还是挺方便的 外国人写的一篇博客介绍自定义验证配置挺全的 3.2.创建验证器类 public class HandsomeBoyValidator implements ConstraintValidatorHandsomeBoy, User { private String name; /** * 用于初始化注解上的值到这个validator * param constraintAnnotation */ Override public void initialize(HandsomeBoy constraintAnnotation) { name constraintAnnotation.name(); } /** * 具体的校验逻辑 * param value * param context * return */ Override public boolean isValid(User value, ConstraintValidatorContext context) { return name null || name.equals(value.getName()); } } 这边的功能是user类里面的name字段必须和配置的一样否则输出一个事实 3.3. 测试 PostMapping(/validate3) ResponseBody public User validate3(Valid HandsomeBoy(name scj,message 盛超杰第二帅) RequestBody User user){return user; } 如果验证不通过会输出盛超杰第二帅全局异常处理器不要忘记配置 4.demo源码下载 https://github.com/shengchaojie/springboot-validation-demo 小礼物走一走来简书关注我 转载于:https://www.cnblogs.com/kelelipeng/p/10183904.html
http://www.sadfv.cn/news/358249/

相关文章:

  • 网站如何做网络推广深圳互联网公司排行榜
  • 网站建设题库及答案佛山seo
  • 做旅游网站公司做网站的软件初中生
  • 网站手机版建设项目书wordpress如何打赏
  • 网站建设的基本知识wordpress 还是写代码
  • 企业网站被黑后如何处理做平面常用的网站
  • 社区微网站建设方案wordpress 浏览量插件
  • 南阳卧龙区高端网站建设价格网站建设公司西安
  • 非凡网站建设平台网页一键 wordpress
  • 手机网站开发例子吉林学校网站建设
  • 做招聘网站的要求涉县移动网站建设报价
  • 厦门小微企业网站建设补贴单页网站如何优化
  • 茂县建设局网站一小时做网站
  • 永久域名免费注册网站整合营销方案案例
  • 奉化市建设局网站建设局长
  • 河北助手app下载东莞市seo网络推广平台
  • 到那里找做网站的兼职城乡与建设厅网站
  • 好玩的网站源码网站开发服务
  • 网站dns刷新网站推广策划思路与执行
  • 怎样才能注册自己的网站品牌营销网站
  • 网站开发需要提供哪些资料建成网
  • asp.net3.5网站开发实例教程wordpress 新建分类目录
  • 网站推广120百度官网认证多少钱一年
  • app网站建站系统下载torrentkitty磁力搜索引擎
  • 可信网站认证多少钱网站开发用什么简单
  • 上海网站建设yuue重庆美食制作
  • 网站建设与栏目设置百度风云榜排行榜
  • 甘肃省建设厅门户网站北京建站公司兴田德润专业
  • 网站备案需要什么流程合肥全网推广
  • 网站建设需要什么系统成都 网站制作