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

一步一步教你做网站后台视频twcms

一步一步教你做网站后台视频,twcms,wordpress博客jin,建设对公银行网站打不开目录 自定义注解的定义和作用范围如何创建自定义注解创建注解接口 如何使用自定义注解进行数据验证创建注解处理器控制器中使用注解 如何为字段添加注解 自定义注解的定义和作用范围 自定义注解可以作用在类、方法、属性、参数、异常、字段或其他注解上。 如何创建自定义注解…

目录

  • 自定义注解的定义和作用范围
  • 如何创建自定义注解
    • 创建注解接口
  • 如何使用自定义注解进行数据验证
    • 创建注解处理器
    • 控制器中使用注解
  • 如何为字段添加注解

自定义注解的定义和作用范围

  • 自定义注解可以作用在类、方法、属性、参数、异常、字段或其他注解上。

如何创建自定义注解

创建注解接口

在这里插入图片描述

package hanshuhuan.test.anonotion;import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;/*** 实体检验自定义注解类,根据我们自定义的注解去检查实体各个字段是否在规定的值内* @author shuhu**/
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface ValidateEntity {public boolean required() default false;//是否检验nullpublic boolean requiredLeng() default false;//是否检验长度public boolean requiredMaxValue() default false;//是否检验最大值public boolean requiredMinValue() default false;//是否检验最小值public int maxLength() default -1;//最大长度public int minLength() default -1;//最小长度public long maxValue() default -1;//最大值public long minValue() default -1;//最小值public String errorRequiredMsg() default "";//值为null时的错误提示信息public String errorMinLengthMsg() default "";//最小长度不满足时的提示信息public String errorMaxLengthMsg() default "";//最大长度不满足时的提示信息public String errorMinValueMsg() default "";//最小值不满足时的提示信息public String errorMaxValueMsg() default "";//最大值不满足时的提示信息
}

如何使用自定义注解进行数据验证

创建注解处理器

package hanshuhuan.test.util;import java.lang.reflect.Field;import hanshuhuan.test.anonotion.ValidateEntity;
import hanshuhuan.test.bean.CodeMsg;/*** 验证实体工具类* @author shuhu**/
public class ValidateEntityUtil {public static CodeMsg validate(Object object){Field[] declaredFields = object.getClass().getDeclaredFields();for(Field field : declaredFields){ValidateEntity annotation = field.getAnnotation(ValidateEntity.class);if(annotation != null){if(annotation.required()){//表示该字段是必填字段field.setAccessible(true);try {Object o = field.get(object);//首先判断是否为空if(o == null){CodeMsg codeMsg = CodeMsg.VALIDATE_ENTITY_ERROR;codeMsg.setMsg(annotation.errorRequiredMsg());return codeMsg;}//到这,说明该变量的值不是null//首先判断是不是String类型if(o instanceof String){//若是字符串类型,则检查其长度if(annotation.requiredLeng()){if(o.toString().length() < annotation.minLength()){CodeMsg codeMsg = CodeMsg.VALIDATE_ENTITY_ERROR;codeMsg.setMsg(annotation.errorMinLengthMsg());return codeMsg;}if(o.toString().length() > annotation.maxLength()){CodeMsg codeMsg = CodeMsg.VALIDATE_ENTITY_ERROR;codeMsg.setMsg(annotation.errorMaxLengthMsg());return codeMsg;}}}//其次来判断是否为数字if(isNumberObject(o)){//判断是否规定检查最小值if(annotation.requiredMinValue()){if(Double.valueOf(o.toString()) < annotation.minValue()){CodeMsg codeMsg = CodeMsg.VALIDATE_ENTITY_ERROR;codeMsg.setMsg(annotation.errorMinValueMsg());return codeMsg;}}//判断是否规定检查最大值if(annotation.requiredMaxValue()){if(Double.valueOf(o.toString()) > annotation.maxValue()){CodeMsg codeMsg = CodeMsg.VALIDATE_ENTITY_ERROR;codeMsg.setMsg(annotation.errorMaxValueMsg());return codeMsg;}}}} catch (IllegalArgumentException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IllegalAccessException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}}return CodeMsg.SUCCESS;}/*** 检查对象是否是数字类型* @param object* @return*/public static boolean isNumberObject(Object object){if(object instanceof Integer)return true;if(object instanceof Long)return true;if(object instanceof Float)return true;if(object instanceof Double)return true;return false;}
}

控制器中使用注解

@RequestMapping(value="/login",method=RequestMethod.POST)
@ResponseBody
public Result<Boolean> login(User user,String cpacha){if(user == null){return Result.error(CodeMsg.DATA_ERROR);}//用统一验证实体方法验证是否合法CodeMsg validate = ValidateEntityUtil.validate(user);if(validate.getCode() != CodeMsg.SUCCESS.getCode()){return Result.error(validate);}//表示实体信息合法,开始验证验证码是否为空if(StringUtils.isEmpty(cpacha)){return Result.error(CodeMsg.CPACHA_EMPTY);}log.info("ok"+user);return Result.success(true);
}

如何为字段添加注解

  • 自定义注解的定义是通过@注解名的方式实现的。
@ValidateEntity(required=true,requiredLeng=true,minLength=4,maxLength=18,errorRequiredMsg="用户名不能为空!",errorMinLengthMsg="用户名长度需大于4!",errorMaxLengthMsg="用户名长度不能大于18!")
@Column(name="username",nullable=false,length=18)
private String username;//用户名@ValidateEntity(required=true,requiredLeng=true,minLength=4,maxLength=32,errorRequiredMsg="密码不能为空!",errorMinLengthMsg="密码长度需大于4!",errorMaxLengthMsg="密码长度不能大于32!")
@Column(name="password",nullable=false,length=32)
private String password;//密码
http://www.yayakq.cn/news/565634/

相关文章:

  • 哪个免费自助建站系统最好用电商网站建设公司排名
  • 网站工作有哪些内容现在做网络的哪个方面最挣钱
  • 国外做彩票网站推广是合法的吗美食网站开发的目的
  • 手机互动网站建设12348法律咨询律师在线
  • 可以做电商题目的网站洛谷网站中小玉文具怎么做
  • 企业网站开发报价形式培训网址大全
  • 网站建设找扌金手指排名查询网站注册信息
  • 自己搭建公司网站外贸单证
  • 网站策划专员所需知识wordpress数据库发文章
  • 湛江网站营销国家品牌网
  • 阿里巴巴对外做网站吗深圳市住房和建设局薛峰简历
  • 怎样做外贸网站网站开发郑州
  • 凡科网站制作教程ui界面设计分析
  • 襄阳建设网站首页网站建设时间及简介
  • wordpress 整站移植专业网站设计第三方服务
  • 平凉城乡建设局网站摄影师个人网站怎么做
  • 网站建设 phpwordpress 编辑器标签
  • 如何黑网站长沙关键词优化平台
  • 怎么创建网站相册学动漫设计需要什么条件
  • 温泉酒店网站建设方案高端品牌护肤品有哪些
  • 怎么样购买网站空间河南省城市建设网站
  • 建设的电影网站总是无法连接河北省建设厅工程信息网站
  • 个体网站建设it外包公司联系电话
  • 网站开发公司可行报告网站建设客户相关问题
  • 模版网站商城南庄建网站
  • 韩国网站怎么打开甘孜州建设局门户网站
  • 如何做商业推广网站小智logo在线制作
  • seo证书考试网站网站开发的基本条件
  • 织梦网做网站品牌建设成效
  • 深建市住房和城乡建设局网站做h的动漫在线观看网站