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

seo网站优化及网站推广公司的网站建设

seo网站优化及网站推广,公司的网站建设,wordpress 图片库,做私活的网站自定义注解校验的实现步骤#xff1a; 1.创建注解类#xff0c;编写校验注解#xff0c;即类似NotEmpty注解 2.编写自定义校验的逻辑实体类#xff0c;编写具体的校验逻辑。(这个类可以实现ConstraintValidator这个接口#xff0c;让注解用来校验) 3.开启使用自定义注解进…自定义注解校验的实现步骤 1.创建注解类编写校验注解即类似NotEmpty注解 2.编写自定义校验的逻辑实体类编写具体的校验逻辑。(这个类可以实现ConstraintValidator这个接口让注解用来校验) 3.开启使用自定义注解进行校验。 第一种实现自定义注解的方式https://blog.csdn.net/m0_46459413/article/details/134257302?spm1001.2014.3001.5502 第二种实现自定义注解的方式 一、创建注解类 1、创建类时选择Annotation类型 2、编写注解类 如图是我们自定义的一个年龄注解message是该注解校验失败时的提示信息default是默认值我们可以重写该提示信息。下面两行代码是自定义注解需要加上的这里不作研究。 二、自定义注解校验逻辑的实现 这里有两种实现方式 一种是当注解仅仅作用在字段(属性)上生效时可以在工具类中编写方法进行逻辑校验 另一种使用Constraint注解指明了校验类进行校验这里只实现第二种。 第二种使用Constraint注解指明校验类进行校验 EX自定的Age注解上面有一个Constraint注解该注解指明了校验类我们点进MyAnnoationValidator类看一下 可以看到校验类都必须要实现ConstraintValidator接口并且重写接口中的两个方法。 接口上是有泛型的第一个泛型代表了我们这个校验类是哪个注解的校验类第二个泛型代表该注解校验的参数是什么类型第二个注解默认是Object类型我们改成了Integer类型 initialize方法 是该校验类的初始化方法在这个方法里我们可以对传进来的参数作一些处理。 isValid方法 就是注解类型的核心校验方法校验通过与否就是看该方法的返回值是true还是falsetrue就代表校验通过false就代表校验失败 三、使用自定义注解 自定义校验注解在代码中的应用 1、在dto中使用 定义一个实体类User 2、在代码中使用 定义一个Controller使用Valid注解我们的User类Valid注解没有实际的注解体这个注解的作用就是使我们的Age注解起作用。 后面的BindingResult类的作用是当注解校验失败时我们可以手动去处理。如果不加这个类的话注解校验失败会直接返回http的400错误码。加上这个类我们可以自己自定义错误信息然后返回此时的http状态码为200 3、valid注解 1、valid注解作用 valid注解主要用于数据校验在接口的入参实体类前添加Valid注解这时实体类会开启一个校验的功能然后在入参实体类中的属性上添加不同的注解例如NotBlank注解来完成不同的校验规则。 2、valid注解的使用 a、在实体类中添加valid相关注解 使用Valid相关注解非常简单只需要在参数的实体类属性上添加如NotBlank,Max,Min等注解对字段进行限制。如下 public class User{NotBlank(message 姓名不为空)private String username;NotBlank(message 密码不为空)private String password; }如果嵌套了实体对象则需要在最外层属性上添加Valid注解否则嵌套实体对象中的验证不生效 public class User{NotBlank(message 姓名不为空)private String username;NotBlank(message 密码不为空)private String password;//嵌套必须加Valid否则嵌套中的验证不生效ValidNotNull(message 用户信息不能为空)private UserInfo userInfo; }public class UserInfo {NotBlank(message 年龄不为空)Max(value 18,message 不超过18岁)private String age;NotBlank(message 性别不为空)private String gender; }b、在接口中添加valid注解 在controller类中添加接口POST方法中接收设置了Valid相关注解的实体对象然后再参数中添加Valid注解来开启效验功能需要注意的是Valid对Get请求中接收的平面参数请求无效。 RestController public class TestController {PostMapping(/user)public String addUserInfo(Valid RequestBody User user){return 调用成功;} }参考链接https://blog.csdn.net/weixin_43400432/article/details/126159450 四、观察仿照 NotEmpty注解编写自定义校验注解 1、观察下NotEmpty 注解: // // Source code recreated from a .class file by IntelliJ IDEA // (powered by Fernflower decompiler) //package org.hibernate.validator.constraints;import java.lang.annotation.Documented; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; import javax.validation.Constraint; import javax.validation.Payload; import javax.validation.ReportAsSingleViolation; import javax.validation.constraints.NotNull; import javax.validation.constraints.Size; import javax.validation.constraintvalidation.SupportedValidationTarget; import javax.validation.constraintvalidation.ValidationTarget;Documented Constraint(validatedBy {} ) SupportedValidationTarget({ValidationTarget.ANNOTATED_ELEMENT}) Target({ElementType.METHOD, ElementType.FIELD, ElementType.ANNOTATION_TYPE, ElementType.CONSTRUCTOR, ElementType.PARAMETER}) Retention(RetentionPolicy.RUNTIME) ReportAsSingleViolation NotNull Size(min 1 ) public interface NotEmpty {String message() default {org.hibernate.validator.constraints.NotEmpty.message};Class?[] groups() default {};Class? extends Payload[] payload() default {};Target({ElementType.METHOD, ElementType.FIELD, ElementType.ANNOTATION_TYPE, ElementType.CONSTRUCTOR, ElementType.PARAMETER})Retention(RetentionPolicy.RUNTIME)Documentedpublic interface List {NotEmpty[] value();} }2、编写身份证校验自定义注解类也必须有message、groups、payload. package com.zzidc.web.validator;import javax.validation.Constraint; import javax.validation.Payload; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target;/** Description //TODO* Date 2019/3/29 17:22* Param* return**/ //注解是指定当前自定义注解可以使用在哪些地方这里仅仅让他可以使用在方法上和属性上 Target({ElementType.METHOD,ElementType.FIELD}) //指定当前注解保留到运行时 Retention(RetentionPolicy.RUNTIME) //指定了当前注解使用哪个类来进行校验。 Constraint(validatedBy IdCardValidator.class) // public interface IsIdCard {String message();// default 关键字 接口中被default修饰的方法在类实现这个接口时不必必须实现这个方法Class?[] groups() default { };// Class? 表示不确定的java类型// ClassT 表示java类型// ClassK,V 分别代表java键值中的key value// ClassE 代表ElementClass? extends Payload[] payload() default {}; }3. 编写校验注解的逻辑类IdCardValidator.class该类必须实现ConstraintValidator package com.zzidc.web.validator;import com.zzidc.web.service.IdCardValidatorService; import org.springframework.beans.factory.annotation.Autowired;import javax.validation.ConstraintValidator; import javax.validation.ConstraintValidatorContext;/*** ClassName IdCardValidator* Description 校验注解的校验逻辑* Date 2019/3/29 17:23**/ public class IdCardValidator implements ConstraintValidatorIsIdCard,String{Autowiredprivate IdCardValidatorService idCardValidatorService;/** Description 校验前的初始化工作* Date 2019/3/29 17:27* Param [isIdCard]* return void**/Overridepublic void initialize(IsIdCard isIdCard) {String message isIdCard.message();System.out.println(自定义的message信息是:.concat(message));}/** Description 具体的校验逻辑* Date 2019/3/29 17:29* Param [s, constraintValidatorContext]* return boolean**/Overridepublic boolean isValid(String s, ConstraintValidatorContext constraintValidatorContext) {return idCardValidatorService.volid(s);} }我们将具体校验逻辑抽出来抽成一个service package com.zzidc.web.service;/*** ClassName IdCardValidatorService* Description TODO* Date 2019/3/29 17:34**/ public interface IdCardValidatorService {boolean volid(String value); }service实现类 package com.zzidc.web.service.impl;import com.zzidc.web.service.IdCardValidatorService; import com.zzidc.web.utils.IdCardUtils; import org.springframework.stereotype.Service;/*** ClassName IdCardValidatorServiceImpl* Description TODO* Date 2019/3/29 17:35**/ Service public class IdCardValidatorServiceImpl implements IdCardValidatorService {Overridepublic boolean volid(String value) {return IdCardUtils.isValidIdCard(value);} }身份证工具校验类: package com.zzidc.web.utils;import org.apache.commons.lang3.StringUtils;/*** ClassName IdCardUtils* Description TODO* Date 2019/3/29 17:37**/ public class IdCardUtils {public static boolean isValidIdCard(String value){String regex ^(0|86|17951)?(13[0-9]|15[012356789]|17[678]|18[0-9]|14[57])[0-9]{8}$;if (StringUtils.isBlank(value)) {return false;}return value.matches(regex);} }
http://www.hkea.cn/news/14491632/

相关文章:

  • 服装企业的网站建设做网站汉狮网络
  • 苏州专业网站设计百度域名验证网站
  • jsp网站开发心得做网站还是微信小程序
  • 可以用wpf做网站吗佛山网站建设科技公司
  • 乔拓云智能建站系统360全景网站怎么做
  • 网站开发的公司推荐中山移动网站建设公司
  • 利用社交网站做淘宝客计算机信息网络系统
  • 建设小学瓯江小区网站徐州网站建设哪家好
  • 网站备案流程阿里云seo薪资seo
  • 免费wordpress响应式企业主题哈尔滨网站基础优化
  • 算命网站建设开发怎么做一个网站出来
  • 网站怎么建设商城中国建设银行人才招聘官方网站
  • 浏览器收录网站天津网站优化方案
  • 分析网站设计外贸公司一年能赚多少
  • 网络公司网站建设首页短期网站建设培训班
  • 遵义公司做网站无锡网站优化公司
  • 网站建设全过程及如何赚钱郑州企业网站优化排名
  • 2015年做那个网站致富钢结构工程外包项目网
  • 企业网站建设长沙树莓派wordpress
  • 设计网站建设图片wordpress留言表单
  • 哈尔滨个人建站模板合肥房产网二手房出售
  • 网站规划建设书软件开发管理软件
  • 电子商城网站建设的实训内容记述怎样创建一个网址
  • 新站seo外包安徽省所有建设类网站
  • 个人网站需要哪些内容网站开发风险
  • 注册网站后邮箱收到邮件口碑好的聊城网站建设
  • 怎么搜 织梦的网站网站开发实践
  • 铁岭市网站建设辽宁网站建设招标
  • 南宁网站制作开发公司seo排名优化联系13火星软件
  • 视频网站顶部效果怎么做的在哪些网站上发外链好