自定义服务器检验 工具类
来源:互联网 发布:怎么下载facebook软件 编辑:程序博客网 时间:2024/05/05 09:13
在做项目开发过程中,我们经常是会在前端做一些数据的检验再将数据传送到服务器端,但是仅有前端检验师往往是不够的,为了增加数据的正确性我们还需要在服务器端做检验来保证这是我们想要的数据。上次一篇做spring的日志记录,用到了自定义注解然后反射获取感觉很是方便,可抽离性很好,这里也是用到同样的方法,来实现~
1.建一个检验注解,用来标注需要检验的属性
package com.demo.validation.utils;import java.lang.annotation.ElementType;import java.lang.annotation.Retention;import java.lang.annotation.RetentionPolicy;import java.lang.annotation.Target;@Target(ElementType.FIELD)@Retention(RetentionPolicy.RUNTIME)public @interface Validation {}
2.检验工具类
package com.demo.validation.utils;import java.lang.annotation.Annotation;import java.lang.reflect.Field;import java.util.ArrayList;import java.util.List;/** * 检验类 * @version 1.0 * 2016年1月16日 创建文件 */public class ValidateUtils { private ValidateUtils() { } public static <T> List<String> validate(T t){ Class clazz=t.getClass(); List<String> errorList=new ArrayList<String>(); if(!clazz.getSuperclass().getSimpleName().equals("Object")){ validate(t); } Field[] fields=clazz.getDeclaredFields(); for(Field field:fields){ Annotation[] annotations=field.getAnnotations(); if(annotations!=null){ try { field.setAccessible(true); Object fieldValue = field.get(t); for(Annotation annotation:annotations){ String aName=annotation.annotationType().getSimpleName(); try { switch(ValidateType.valueOf(aName)){ case RequiredField: if(!validateRequiredField(fieldValue)) { errorList.add(((RequiredField)annotation).message()); } break; } } catch (Exception e) { // TODO: handle exception } } } catch (IllegalArgumentException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalAccessException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } return errorList; } /** * 判断是否为空 * @param fieldValue * @return */ public static boolean validateRequiredField(Object fieldValue){ return fieldValue instanceof String?fieldValue!=null&&!fieldValue.equals(""):fieldValue!=null; }}
其他代码我就不附上了,具体代码下载就可以了
下载地址
0 0
- 自定义服务器检验 工具类
- android工具类之检验服务是否活着
- 在线JSON 检验格式化工具
- R统计工具:正态性检验
- javascript检验工具的比较
- 自定义LogUtils工具类
- 自定义HttpClient工具类
- 自定义HttpURLConnection工具类
- 自定义日志工具类
- UtilTools 自定义工具类
- ios自定义工具类
- 自定义dialog+工具类
- 自定义Audio工具类
- 工具类:自定义 pickerView
- 自定义时间工具类
- 自定义录音工具类
- 自定义时间工具类
- 自定义Toast工具类
- Android \uFEFF问题
- java实现的简单网页爬虫:Servlet 搜索引擎核心爬虫程序(三)
- 【python学习笔记】使用类封装实现贪吃蛇
- SSHLibrary的应用
- phpexcel中文教程-设置表格字体颜色背景样式、数据格式、对齐方式、添加图片、批注、文字块、合并拆分单元格、单元格密码保护
- 自定义服务器检验 工具类
- office2013秘钥大全
- LOR手游开发过程记录——菜单界面——NFC的Unity接口
- DirectX 创建一个窗口
- 大型网站架构演变及缓存技术
- 这个比赛真有意思
- CSS3动画
- 在Ubuntu 14.04 LTS系统中设置Apache虚拟主机
- linux路由配置命令route学习