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

江门网站制作培训怎样做好服务营销

江门网站制作培训,怎样做好服务营销,福建省建设厅网站电脑板,上海设计网站建设一、Bean Validation简介 Bean Validation是Java定义的一套基于注解的数据校验规范,目前已经从JSR 303的1.0版本升级到JSR 349的1.1版本,再到JSR 380的2.0版本(2.0完成于2017.08),目前最新稳定版2.0.2(201…

一、Bean Validation简介

Bean Validation是Java定义的一套基于注解的数据校验规范,目前已经从JSR 303的1.0版本升级到JSR 349的1.1版本,再到JSR 380的2.0版本(2.0完成于2017.08),目前最新稳定版2.0.2(201909)
对于spring boot应用,直接引用它提供的starter

<!--        基于注解的数据校验规范 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-validation</artifactId></dependency>

二、常用注解

常用注解如下:
在这里插入图片描述
直接在Controller层使用

@RestController
@RequestMapping("/app/api")
@Validated
@Slf4j
public class SpringGuaranteeReportController {@RequestMapping("/sendSpringGuaranteeReport")public ResultObject<String> sendSpringGuaranteeReport(@Min(value = 1) @Max(value = 2) Integer mmsType,@Min(value = 1) @Max(value = 2) Integer groupType,@NotBlank String opTime) {…………}
}

一个简单的接口,传入一个Person对象,加上@Valid启用校验,bindingResult里面就包含了参数校验的结果

@Data
public class Person {@NotBlank(message = "姓名不能为空")private String name;@NotBlank(message = "性别不能为空")private String sex;@NotNull(message = "年龄不能为空")@Max(value = 100, message = "年龄不能超过100")private Integer age;@Email(message = "电子邮箱格式错误")private String email;@Pattern(regexp = "^1[3|4|5|7|8][0-9]{9}$")private String phone;@NotEmpty(message = "兴趣不能为空")private List<String> hobby;
}

这里做了判空和基本格式校验
其中关于@NotEmpty、@NotNull、@NotBlank的区别:
简单来说,在Integer或者自定义对象中使用@NotNull,在String上使用@NotBlank,在集合上使用NotEmpty

三、配置类

validate参数校验默认的是一个参数校验失败后,还会继续校验后面的参数,通过这个配置改成:校验参数时只要出现校验失败的情况,就立即抛出对应的异常,结束校验,不再进行后续的校验

import org.hibernate.validator.HibernateValidator;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.validation.beanvalidation.MethodValidationPostProcessor;import javax.validation.Validation;
import javax.validation.Validator;
import javax.validation.ValidatorFactory;/*** validate参数校验默认的是一个参数校验失败后,还会继续校验后面的参数* 通过这个配置改成:校验参数时只要出现校验失败的情况,就立即抛出对应的异常,结束校验,不再进行后续的校验*/
@Configuration
public class ValidationConfig {@Beanpublic Validator validator() {ValidatorFactory validatorFactory = Validation.byProvider(HibernateValidator.class).configure()/**failFast的意思只要出现校验失败的情况,就立即结束校验,不再进行后续的校验*/.failFast(true).buildValidatorFactory();return validatorFactory.getValidator();}@Beanpublic MethodValidationPostProcessor methodValidationPostProcessor() {MethodValidationPostProcessor methodValidationPostProcessor = new MethodValidationPostProcessor();methodValidationPostProcessor.setValidator(validator());return methodValidationPostProcessor;}}

validate参数校验失败后,返回的json数据可能并不是咱们最终想要的,下图就是校验失败后它默认返回的数据

在这里插入图片描述
一般情况下,咱们可能只需要图中标红的那个提示信息就OK了
那怎么改它的返回数据呢?
只要添加一个异常处理类就行了,捕获抛出的异常

import com.ai.boy.common.R;
import lombok.extern.slf4j.Slf4j;
import org.springframework.context.support.DefaultMessageSourceResolvable;
import org.springframework.validation.BindException;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;import javax.servlet.http.HttpServletResponse;
import javax.validation.ConstraintViolation;
import javax.validation.ConstraintViolationException;
import java.util.stream.Collectors;/*** 全局异常处理*/
@ControllerAdvice
@Slf4j
public class GlobalHandlerExceptionResolver {/*** 处理请求中 使用@Valid 验证路径中请求实体校验失败后抛出的异常*/@ExceptionHandler(BindException.class)@ResponseBodypublic R BindExceptionHandler(BindException e) {String message = e.getBindingResult().getAllErrors().stream().map(DefaultMessageSourceResolvable::getDefaultMessage).collect(Collectors.joining());return R.error(message);}/*** 处理请求参数格式错误 @RequestParam上validate失败后抛出的异常是ConstraintViolationException*/@ExceptionHandler(ConstraintViolationException.class)@ResponseBodypublic R ConstraintViolationExceptionHandler(ConstraintViolationException e) {String message = e.getConstraintViolations().stream().map(ConstraintViolation::getMessage).collect(Collectors.joining());return R.error(message);}/*** 处理未知异常* */@ExceptionHandler(Exception.class)@ResponseBodypublic R error(HttpServletResponse response, Exception e){log.info("未知异常信息:{}",e.getMessage());return R.error("未知异常,请联系管理员!");}}
http://www.ds6.com.cn/news/21043.html

相关文章:

  • 杭州学校网站开发顶尖文案网站
  • 图列说明网站开发的流程超级外链发布工具
  • 移动网站建设关键词百度指数查询
  • 推荐个网站免费的app开发工具哪个好
  • 建设规划许可证公示网站建网站需要什么条件
  • 试客类网站开发免费私人网站建设
  • 动态网站开发视频教程教育培训机构前十名
  • 鞍山网站制作最新网域查询入口
  • 阿里妈妈网站建设不完整深圳搜索引擎
  • 为什么要建设营销型网站软文推广多少钱
  • 自己怎么做VIP视频解网站2022网站快速收录技术
  • 中企动力网站培训seo网站推广助理招聘
  • 个人如何申请网站武汉网络推广自然排名
  • 俄罗斯网站建设公司英文站友情链接去哪里查
  • 网页设计与制作教程习题五答案嘉兴seo网络推广
  • 网站的建设服务平台seo推广优化多少钱
  • 网易企业邮箱登录入口手机深圳关键词排名优化系统
  • 由一个网页建成的网站济南做seo排名
  • 网站建设 sql网络营销网站分析
  • 滨江建设工程网站福建seo排名培训
  • 推广链接怎么自己搞定关键词优化的五个步骤
  • 个人主题网站南宁白帽seo技术
  • 电子商务网站规划与建设论文湖南正规seo优化
  • 益阳做网站怎么便宜精准引流推广
  • 网站上做公司宣传西安关键词优化服务
  • 做兼职在线抠图网站搜索引擎营销的简称
  • 济南外贸网站建设如何制作自己的网站
  • 网站怎么做防盗头条收录提交入口
  • 满堂彩谁做的网站公司网站建设推广
  • cpu占用超出网站空间的分配值建站企业网站