当前位置: 首页 > 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.yutouwan.com/news/358249/

相关文章:

  • 如何搭建一个购物网站界面设计证书
  • 网站方案策划书重庆网站推广优化
  • 主机屋网站北京朝林建设集团网站
  • 2003网站建设浏览器登录入口
  • 成都网站建设 木木科技做网站需要哪些技术人员
  • 网站建设培训西安现代简约装修
  • 做开箱的网站建设银行网站入口
  • 用html5做的网站过程大型视频网站开发
  • 做网站的需要什么要求软件开发模型有哪些各有什么特点
  • 重庆网站建设沛宣网络如何做好线上销售
  • vs2012建设空网站网站建设需要具备哪些
  • 备案ip 查询网站查询网站查询系统泉州网站搭建
  • 网站建设定做做空山寨币的网站
  • 免费网站模版晋城做网站的
  • 专做情侣装网站千图网素材免费下载
  • 厚街镇网站仿做wordpress怎样用
  • 门户站模板wordpress默认页面
  • 广州市网站建设 骏域吉林有做网站的吗
  • 做搜狗手机网站快php做网站 价格
  • 谷歌外贸建站网站建设 东道网络
  • 德州商城网站建设wordpress查看访问
  • 健身网站建设哪些网站使用wordpress
  • 网站制作后续维护电子商务就业方向
  • 泰州做网站的网站建设专业的公司哪家好
  • wordpress 外贸网站千图网免费素材图库背景
  • 佛山专门做网站设计怎样做成品网站制作公司
  • 合肥百度团购网站建设微信开发者模式
  • 徐州网站开发信息社团网站建设
  • 高校网站建设意义杭州seo管理
  • wordpress小说站主题河南工程建设信息网站