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

微信开放平台与个人网站怎么/上海培训机构整顿

微信开放平台与个人网站怎么,上海培训机构整顿,现在的网站开发方式,dw如何做网站界面开发中,通常操作逻辑都是先进性数据校验,校验完毕以后才进行真正的逻辑处理。通常情况下,可以使用javax.validation校验注解,类似于AOP面向切面的实现数据的校验。在springboot中引入spring-boot-starter-web依赖,就会…

开发中,通常操作逻辑都是先进性数据校验,校验完毕以后才进行真正的逻辑处理。通常情况下,可以使用javax.validation校验注解,类似于AOP面向切面的实现数据的校验。在springboot中引入spring-boot-starter-web依赖,就会自动引入hibernate-validator。如图:

9fd688bb57bb4e55df7a38ffeaf540a9.png

内置注解

使用javax.validation校验参数,一般在controller层,对方法参数进行校验。常用的注解包括:@NotNull,值不能为空,@Positive,数字为正数,@Size,字符串大小限制。示例:

/*** @Author iloveoverfly**/@Data
public class UserAddDto implements Serializable {private static final long serialVersionUID = -6630904002198113779L;@NotEmpty(message = "用户名称为空")private String username;@NotNull(message = "用户的类型为空")private Integer category;
}

扩展注解

在系统中,会根据业务新增不同的校验逻辑,例如,电话号码的校验,数字类型枚举值校验,数据id的有效性校验等等。示例,定义注解@EffectivePhone进行电话号码校验,EffectivePhone注解定义如下:

@Target({ElementType.METHOD, ElementType.FIELD, ElementType.ANNOTATION_TYPE, ElementType.CONSTRUCTOR, ElementType.PARAMETER, ElementType.TYPE_USE})
@Retention(RetentionPolicy.RUNTIME)
@Repeatable(EffectivePhone.List.class)
@Documented
@Constraint(validatedBy = {EffectivePhoneConstraint.class}
)public @interface EffectivePhone {
String message() default "{javax.validation.constraints.EffectivePhone.message}";Class<?>[] groups() default {};Class<? extends Payload>[] payload() default {};@Target({ElementType.METHOD, ElementType.FIELD, ElementType.ANNOTATION_TYPE, ElementType.CONSTRUCTOR, ElementType.PARAMETER, ElementType.TYPE_USE})@Retention(RetentionPolicy.RUNTIME)@Documentedpublic @interface List {EffectivePhone[] value();}
}

定义 EffectivePhoneConstraint实现电话号码的校验,代码如下:

@Slf4j
public class EffectivePhoneConstraint implements ConstraintValidator<EffectivePhone, String> {@Overridepublic boolean isValid(String phone, ConstraintValidatorContext constraintValidatorContext) {if (StringUtils.isBlank(phone)) {return false;}return PhoneUtil.isPhone(phone);}
}

使用该校验逻辑的示例如下:

@Datapublic class UserAddDto implements Serializable {private static final long serialVersionUID = -6630904002198113779L;@EffectivePhone(message = "无效的电话号码")private String phoneNumber;}

@Validated与@Valid使用

Validated和Valid都可以实现参数校验。Validated能够对参数校验可以进行分组,用于根据不同的分组生效指定的校验逻辑。定义ValidateGroup,用于却分不同校验的分组,UserAddOrUpdateDto,用于用户新增或者修改的共同参数,代码如下:


// 校验规则的分组public class ValidateGroup {/*** 新增分组*/public interface Add {}/*** 修改操作分组*/public interface Update {}
}// 用户新增或者修改的参数部分规则@Datapublic class UserAddOrUpdateDto implements Serializable {private static final long serialVersionUID = -3968061262394340781L;@NotNull(message = "id为空", groups = {ValidateGroup.Update.class})private Long id;@NotEmpty(message = "名称为空", groups = {ValidateGroup.Add.class, ValidateGroup.Update.class})private String name;
}
// 用户新增和修改api@RestController
@RequestMapping("/users")
@Slf4jpublic class UserController {@Autowiredprivate IUserManager userManager;// 用户新增@PostMapping("/add")public Response addUser(@Validated(ValidateGroup.Add.class) @RequestBody UserAddOrUpdateDto userAddDto) {return Response.success(this.userManager.addUser(userAddDto));}// 用户修改@PutMapping("/update")public Response updateUser(@Validated(ValidateGroup.Update.class) @RequestBody UserAddOrUpdateDto userUpdateDto) {return Response.success(userManager.userUpdateDto(userUpdateDto));}
}

Valid用于生效包含类参数的校验逻辑,示例,用户参数中的权限校验参数中,权限编码不能为空。代码如下:


// 用户新增或者修改的参数部分规则@Datapublic class UserAddOrUpdateDto implements Serializable {private static final long serialVersionUID = -3968061262394340781L;@NotNull(message = "id为空", groups = {ValidateGroup.Update.class})private Long id;@NotEmpty(message = "名称为空", groups = {ValidateGroup.Add.class, ValidateGroup.Update.class})private String name;// 权限校验字段生效@Validprivate List<PermissionDto> permissions;// 用户拥有权限@Datapublic final class PermissionDto implements Serializable {private static final long serialVersionUID = 9057606562562888975L;private Long id;private String name;@NotEmpty(message = "权限编码为空")private String code;}
}
http://www.lbrq.cn/news/1118629.html

相关文章:

  • 凡客诚品官方网店下/seo站长工具查询
  • 做网站需要学会写代码吗/网站优化联系
  • 月编程做网站/网站推广优化公司
  • 老师用什么网站做ppt/怎么找平台推广自己的产品
  • 网站建设论文的摘要/百度应用app
  • 建站系统做网站/今日头条新闻军事
  • 网站内容批量替换/引流软件
  • 门户网站建设自查/如何让自己的网站被百度收录
  • 网站建设价格便宜/如何免费搭建自己的网站
  • 泾川县建设局网站/网站建设公司大全
  • 深圳网站建设外贸公司/建站cms
  • java jsp做网站/百度客户服务电话
  • 网站做优化一开始怎么做/推广如何做网上引流
  • 网站如何做QQ登录/百度指数明星搜索排名
  • 个人网站做哪些内容/推广专员
  • 唐山中小企业网站制作/网络营销团队
  • 工商登记网站/百度网盘app
  • 武汉企业管理培训课程/沈阳网站制作优化推广
  • wordpress备份数据库/排名优化网站
  • 郑州 (网站建设/百度推广费用多少钱
  • 网站的运营推广方案/企业营销策划公司
  • 做网站的常识/宁波seo企业推广
  • 做网站怎建立ftp和数据库/营销技巧和营销方法培训
  • 遵义怎样做网站/百度广告联盟下载
  • 自适应网站什么做/长春seo顾问
  • 信息技术教学网站开发/seo店铺描述例子
  • 商城网站建站系统源码/百度热线客服24小时
  • 九江企业网站制作/cps广告联盟平台
  • 做网站能赚到流量费吗/百度推广一年要多少钱
  • 包装设计模板设计素材/长春关键词优化平台
  • 力扣-146.LRU缓存机制
  • HTML进阶
  • 如何解决pip安装报错ModuleNotFoundError: No module named ‘tkinter’问题
  • RAG优化秘籍:基于Tablestore的知识库答疑系统架构设计
  • AI辅助Python编程30天速成
  • Ubuntu24 辅助系统-屏幕键盘的back按键在网页文本框删除不正常的问题解决方法