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

如何设计自己网站网络推广外包一年多少钱

如何设计自己网站,网络推广外包一年多少钱,做网站造假,山西网站建设价格validation-数据校验 前端可以通过day.js、elemetui的表单验证rules等 进行校验。 为什么使用&#xff1a; Validation是一套帮助我们继续对传输的参数进行数据校验的注解&#xff0c;通过配置Validation可以轻松优雅的完成对数据的约束检验。 添加注解 <!-- val…

validation-数据校验

前端可以通过day.js、elemetui的表单验证rules等 进行校验。

为什么使用:
@Validation是一套帮助我们继续对传输的参数进行数据校验的注解,通过配置Validation可以轻松优雅的完成对数据的约束检验。

添加注解

<!--        validation数据校验--><dependency><groupId>javax.validation</groupId><artifactId>validation-api</artifactId><version>2.0.1.Final</version></dependency><!--springboot 高版本默认以及成validation,添加下面依赖,属性验证--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-validation</artifactId></dependency>

常用注解

@AssertTrue用于 boolean 字段,该字段只能为 true
@AssertFalse用于 boolean 字段,该字段只能为 false
@DecimalMax用于 Number 字段,只能小于或等于该值
@DecimalMin用于 Number 字段,只能大于或等于该值
@Digits(integer=2,fraction=20)检查是否是数字,校验整数位及小数位
@Future检查该字段的日期是否是属于将来的日期
@Past验证日期是否在当前时间之前,否则无法通过校验
@Length(min=2,max=6)用于字符串,检查字段长度是否在指定范围内
@Max用于 Number 字段,只能小于或等于该值
@Min用于 Number 字段,只能大于或等于该值
@NotNull该字段不能为空
@NotEmpty用于字符串,该字段不能为空字符串
@NotBlank用于字符串,该字段不能为空字符串,忽略空格
@Null该字段必须为空
@Size(min=2,max=4)用于字符串、数组、集合、Map等,检查该字段的size是否在指定范围
@Digits(integer = 2, fraction = 2)验证数字的整数位和小数位的位数是否超过指定的长度
@Pattern(regexp = “[abc]”)用于验证字段是否与给定的正则相匹配
@Range(min=, max=)区间校验
@Email验证是否是邮件地址,如果为null,不进行验证,算通过验证。

使用方法

步骤1:使用校验注解

在Java中提供了一系列的校验方式,它这些校验方式在“javax.validation.constraints”包中,提供了如@Email,@NotNull,@NotBlank等注解。

自定义错误消息,可以覆盖默认的错误提示信息.更改注解的message值

public class BrandEntity implements Serializable {private static final long serialVersionUID = 1L;/*** 品牌id*/@TableIdprivate Long brandId;/*** 品牌名*/@NotBlank(message = "品牌名必须提交")private String name;
}

步骤2:在请求方法种,使用校验注解@Valid,开启校验,

    @RequestMapping("/save")public R save(@Valid @RequestBody BrandEntity brand){brandService.save(brand);return R.ok();}

能够看到"defaultMessage": “不能为空”,这些错误消息定义在“hibernate-validator”的“\org\hibernate\validator\ValidationMessages_zh_CN.properties”文件中。在该文件中定义了很多的错误规则:

在这里插入图片描述

javax.validation.constraints.AssertFalse.message     = 只能为false
javax.validation.constraints.AssertTrue.message      = 只能为true
javax.validation.constraints.DecimalMax.message      = 必须小于或等于{value}
javax.validation.constraints.DecimalMin.message      = 必须大于或等于{value}
javax.validation.constraints.Digits.message          = 数字的值超出了允许范围(只允许在{integer}位整数和{fraction}位小数范围内)
javax.validation.constraints.Email.message           = 不是一个合法的电子邮件地址
javax.validation.constraints.Future.message          = 需要是一个将来的时间
javax.validation.constraints.FutureOrPresent.message = 需要是一个将来或现在的时间
javax.validation.constraints.Max.message             = 最大不能超过{value}
javax.validation.constraints.Min.message             = 最小不能小于{value}
javax.validation.constraints.Negative.message        = 必须是负数
javax.validation.constraints.NegativeOrZero.message  = 必须是负数或零
javax.validation.constraints.NotBlank.message        = 不能为空
javax.validation.constraints.NotEmpty.message        = 不能为空
javax.validation.constraints.NotNull.message         = 不能为null
javax.validation.constraints.Null.message            = 必须为null
javax.validation.constraints.Past.message            = 需要是一个过去的时间
javax.validation.constraints.PastOrPresent.message   = 需要是一个过去或现在的时间
javax.validation.constraints.Pattern.message         = 需要匹配正则表达式"{regexp}"
javax.validation.constraints.Positive.message        = 必须是正数
javax.validation.constraints.PositiveOrZero.message  = 必须是正数或零
javax.validation.constraints.Size.message            = 个数必须在{min}和{max}之间org.hibernate.validator.constraints.CreditCardNumber.message        = 不合法的信用卡号码
org.hibernate.validator.constraints.Currency.message                = 不合法的货币 (必须是{value}其中之一)
org.hibernate.validator.constraints.EAN.message                     = 不合法的{type}条形码
org.hibernate.validator.constraints.Email.message                   = 不是一个合法的电子邮件地址
org.hibernate.validator.constraints.Length.message                  = 长度需要在{min}和{max}之间
org.hibernate.validator.constraints.CodePointLength.message         = 长度需要在{min}和{max}之间
org.hibernate.validator.constraints.LuhnCheck.message               = ${validatedValue}的校验码不合法, Luhn模10校验和不匹配
org.hibernate.validator.constraints.Mod10Check.message              = ${validatedValue}的校验码不合法, 模10校验和不匹配
org.hibernate.validator.constraints.Mod11Check.message              = ${validatedValue}的校验码不合法, 模11校验和不匹配
org.hibernate.validator.constraints.ModCheck.message                = ${validatedValue}的校验码不合法, ${modType}校验和不匹配
org.hibernate.validator.constraints.NotBlank.message                = 不能为空
org.hibernate.validator.constraints.NotEmpty.message                = 不能为空
org.hibernate.validator.constraints.ParametersScriptAssert.message  = 执行脚本表达式"{script}"没有返回期望结果
org.hibernate.validator.constraints.Range.message                   = 需要在{min}和{max}之间
org.hibernate.validator.constraints.SafeHtml.message                = 可能有不安全的HTML内容
org.hibernate.validator.constraints.ScriptAssert.message            = 执行脚本表达式"{script}"没有返回期望结果
org.hibernate.validator.constraints.URL.message                     = 需要是一个合法的URLorg.hibernate.validator.constraints.time.DurationMax.message        = 必须小于${inclusive == true ? '或等于' : ''}${days == 0 ? '' : days += '天'}${hours == 0 ? '' : hours += '小时'}${minutes == 0 ? '' : minutes += '分钟'}${seconds == 0 ? '' : seconds += '秒'}${millis == 0 ? '' : millis += '毫秒'}${nanos == 0 ? '' : nanos += '纳秒'}
org.hibernate.validator.constraints.time.DurationMin.message        = 必须大于${inclusive == true ? '或等于' : ''}${days == 0 ? '' : days += '天'}${hours == 0 ? '' : hours += '小时'}${minutes == 0 ? '' : minutes += '分钟'}${seconds == 0 ? '' : seconds += '秒'}${millis == 0 ? '' : millis += '毫秒'}${nanos == 0 ? '' : nanos += '纳秒'}

步骤3:给校验的Bean后,紧跟一个BindResult,就可以获取到校验的结果。拿到校验的结果,就可以自定义的封装。

 @RequestMapping("/save")public R save(@Valid @RequestBody BrandEntity brand, BindingResult result){if( result.hasErrors()){Map<String,String> map=new HashMap<>();//1.获取错误的校验结果result.getFieldErrors().forEach((item)->{//获取发生错误时的messageString message = item.getDefaultMessage();//获取发生错误的字段String field = item.getField();map.put(field,message);});return R.error(400,"提交的数据不合法").put("data",map);}brandService.save(brand);return R.ok();}

在这里插入图片描述

这种是针对于该请求设置了一个内容校验,如果针对于每个请求都单独进行配置,显然不是太合适,实际上可以统一的对于异常进行处理。

步骤4:统一异常处理

可以使用SpringMvc所提供的@ControllerAdvice,通过“basePackages”能够说明处理哪些路径下的异常。

(1)抽取一个异常处理类

package com.df.gulimall.product.exception;import com.df.common.utils.R;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.MethodArgumentNotValidException;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestControllerAdvice;import java.util.HashMap;
import java.util.Map;/*** 集中处理所有异常*/
@Slf4j
@RestControllerAdvice(basePackages = "com.df.gulimall.product.controller")
public class GulimallExceptionAdvice {//数据校验异常   s@ExceptionHandler(value = Exception.class)public R handleValidException(MethodArgumentNotValidException exception) {Map<String, String> map = new HashMap<>();BindingResult bindingResult = exception.getBindingResult();bindingResult.getFieldErrors().forEach(fieldError -> {String message = fieldError.getDefaultMessage();String field = fieldError.getField();map.put(field, message);});log.error("数据校验出现问题{},异常类型{}", exception.getMessage(), exception.getClass());return R.error(BizCodeEnume.VALID_EXCEPTION.getCode(), BizCodeEnume.VALID_EXCEPTION.getMsg()).put("data", map);}//其他异常处理@ExceptionHandler(value = Throwable.class)public R handleException(Throwable throwable) {return R.error(BizCodeEnume.UNKNOW_EXEPTION.getCode(), BizCodeEnume.UNKNOW_EXEPTION.getMsg());}
}

(2)测试: http://localhost:88/api/product/brand/save

在这里插入图片描述

(3)默认异常处理

   @ExceptionHandler(value = Throwable.class)public R handleException(Throwable throwable){log.error("未知异常{},异常类型{}",throwable.getMessage(),throwable.getClass());return R.error(BizCodeEnum.UNKNOW_EXEPTION.getCode(),BizCodeEnum.UNKNOW_EXEPTION.getMsg());}

(4)错误状态码

上面代码中,针对于错误状态码,是我们进行随意定义的,然而正规开发过程中,错误状态码有着严格的定义规则,如该在项目中我们的错误状态码定义

在这里插入图片描述

为了定义这些错误状态码,我们可以单独定义一个常量类,用来存储这些错误状态码

package com.bigdata.common.exception;/**** 错误码和错误信息定义类* 1. 错误码定义规则为5为数字* 2. 前两位表示业务场景,最后三位表示错误码。例如:100001。10:通用 001:系统未知异常* 3. 维护错误码后需要维护错误描述,将他们定义为枚举形式* 错误码列表:*  10: 通用*      001:参数格式校验*  11: 商品*  12: 订单*  13: 购物车*  14: 物流*/
public enum BizCodeEnum {UNKNOW_EXEPTION(10000,"系统未知异常"),VALID_EXCEPTION( 10001,"参数格式校验失败");private int code;private String msg;BizCodeEnum(int code, String msg) {this.code = code;this.msg = msg;}public int getCode() {return code;}public String getMsg() {return msg;}
}

(5)测试: http://localhost:88/api/product/brand/save
在这里插入图片描述

http://www.hotlads.com/news/1035.html

相关文章:

  • 南昌网站建设工作室宁波seo优化流程
  • 独立主机 网站搬家正规的教育培训机构有哪些
  • 营销型网站建设教程营销型网站定制
  • 做网站一般都选哪家促销式软文案例
  • 女频做的最好的网站广州seo招聘信息
  • 网站建设前台功能sem竞价推广
  • 手机 网站开发aspx市场营销方案范文
  • 怎么免费制作一个企业网站2345网址大全浏览器
  • 专门做物业催收的网站天津网站优化公司
  • 网络推广渠道排名朝阳seo
  • 北京市建设教育协会网站查询百度客户服务电话
  • 松岗网站的建设天津seo托管
  • 网站建设方案意见如何统计网站访问量
  • 阿里巴巴建设网站百度网站登录入口
  • 广东建设厅官网优化设计答案大全英语
  • 展台设计方案介绍国外seo网站
  • 营销网站搭建建议百度查询
  • 辽阳市网站建设搜狗搜索引擎入口
  • 网站新闻列表页设计网奇seo培训官网
  • 浏阳做网站的公司价格青岛seo网站管理
  • 能不能自己做网站推广网络培训心得
  • 建设部工程业绩网站搜索引擎优化的基本手段
  • 云盘建设网站百度运营推广
  • 企业网站的优点制作网站的基本步骤
  • dw网页设计期末作业源代码搜狗整站优化
  • 毕业设计可以做哪些网站晨阳seo顾问
  • 贵阳网站建设优化最新新闻事件
  • 如何做优化网站的原创性文章百度400电话
  • 温州手机网站制作多少钱创建自己的网址
  • 怎么申请免费的网站空间域名注册服务商