利用反射做类参数的校验

需求描述

业务需求描述:对webservice接口参数校验

代码实现

  /*** 字符串长度校验* * @param str* @param len* @return 合法(true),不合法(false)*/public static boolean check(String str, int len) {if (null != str && str.length() > len) {return false;}return true;}/*** 参数校验* * @param data* @return 合法(true),不合法(false)* @throws IntrospectionException* @throws InvocationTargetException* @throws IllegalArgumentException* @throws IllegalAccessException*/public static List<String> checkParamLength(Object obj)throws IntrospectionException, IllegalAccessException, IllegalArgumentException, InvocationTargetException {List<String> list = new ArrayList<String>();Class clazz = obj.getClass();Field[] fields = clazz.getDeclaredFields();for (Field field : fields) {String key = field.getName();PropertyDescriptor descriptor = new PropertyDescriptor(key, clazz);Method method = descriptor.getReadMethod();String value = (String) method.invoke(obj);if (!check(value, Constants.ParamMap.get(key))) {list.add("error param: " + key + "=> actualLen: " + value.length() + " maxLen: "+ Constants.ParamMap.get(key));}}return list;}

 

后续会使用反射机制中的【注解】实现这个功能。

转载于:https://www.cnblogs.com/Joy-Hu/p/7678355.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/280144.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

跨域的四种方式

本文主要是关于跨域的几种方式&#xff0c;关于什么是跨域这里就不多说了&#xff0c;写这个也是为了记住一些知识点的。 一. jsonp jsonp的跨域方式很容易理解&#xff0c;页面的的每一个script标签浏览器都会发送get请求获取对应的文本资源&#xff0c;获取到了之后&#xff…

Linux之read命令使用

ead命令&#xff1a; read 命令从标准输入中读取一行&#xff0c;并把输入行的每个字段的值指定给 shell 变量 1&#xff09;read后面的变量var可以只有一个&#xff0c;也可以有多个&#xff0c;这时如果输入多个数据&#xff0c;则第一个数据给第一个变量&#xff0c;第二个数…

python之路day10-命名空间和作用域、函数嵌套,作用域链、闭包

楔子 假如有一个函数&#xff0c;实现返回两个数中的较大值&#xff1a; def my_max(x,y):m x if x>y else yreturn mbigger my_max(10,20)print(bigger) 之前是不是我告诉你们要把结果return回来你们就照做了&#xff1f;可是你们有没有想过&#xff0c;我们为什么要把结…

hive(II)--sql考查的高频问题

在了解别人hive能力水平的时候&#xff0c;不管是别人问我还是我了解别人&#xff0c;有一些都是必然会问的东西。问的问题也大都大同小异。这里总结一下我遇到的那些hive方面面试可能涉及的问题 1、行转列&#xff08;列转行&#xff09; 当我们建设数据仓库时&#xff0c;我们…

java概述

一、java平台无关&#xff1a;jvm二、java健壮语言&#xff1a;无指针&#xff0c;语法上无指正&#xff0c;无内存申请与释放。 三、java核心机制而&#xff1a; jvmjava垃圾收集机制 GC四、java运行过程&#xff1a;源程序&#xff08;.java&#xff09;——》java编译器——…

时间间隔

计算当前时间与上次执行时间的时间间隔。 NSTimeInterval timetravel [[NSDate date]timeIntervalSinceDate:self.lastPlaySoundDate];if (timetravel<3.0) {DLog("时间太短&#xff0c;。。");}self.lastPlaySoundDate [NSDate date]; 转载于:https://www.cnb…

.Net+MySQL组合开发(二) 数据访问篇

一、建立数据库、表、添加数据这里我们使用图形化操作的SQL Manager 2005 Lite for MySQL来建立数据&#xff0c;它的操作界面非常类似OFFICE软件&#xff0c;使用方便、很容量上手、下面开始建立数据库及表单击"Creat New DataBase"&#xff1a;新建DB输入密码&…

Git vs SVN

一、Git vs SVN Git 和 SVN 孰优孰好&#xff0c;每个人有不同的体验。Git是分布式的&#xff0c;SVN是集中式的这是 Git 和 SVN 最大的区别。若能掌握这个概念&#xff0c;两者区别基本搞懂大半。因为 Git 是分布式的&#xff0c;所以 Git 支持离线工作&#xff0c;在本地可以…

.net api 和java平台对接技术总结

这两天 一直和京东对接接口&#xff0c;我们用.net api 提供接口&#xff0c;对方用java调用&#xff0c;本来没什么问题&#xff0c;但是对方对数据安全要求特别严&#xff0c;要验签&#xff0c;于是噩梦开始了。 1、在传输的时候&#xff0c;约定传输格式&#xff1a; HttpW…

Burpsuite学习(4)

2019独角兽企业重金招聘Python工程师标准>>> burpsuite spider模块通过跟踪 HTML 和 JavaScript 以及提交的表单中的超链接来映射目标应用程序&#xff0c;它还使用了一些其他的线索&#xff0c;如目录列表&#xff0c;资源类型的注释&#xff0c;以及 robots.txt 文…

Git删除分支/恢复分支

这是https://www.cnblogs.com/utank/p/7880441.html的方法&#xff0c;虽然很老现在有点不一样&#xff0c;但总体还是能用的。 总结就是两种方法 1.用commit的id恢复 2.用reflog的头指针恢复 •删除一个已被终止的分支 如果需要删除的分支不是当前正在打开的分支&#xff0c;使…

NetCore2.0Web应用之Startup

为什么80%的码农都做不了架构师&#xff1f;>>> 作为main函数的程序启动文件UseStartup 默认就是调用我们的整个应用程序的启动文件 class Program{static void Main(string[] args){var host new WebHostBuilder().UseKestrel() // 指定WebServer为Kes…

windows XP系统下oracle完整卸载过程

NT环境下&#xff1a; 1、以NT的Administrator 登陆 2、通过控制面版-〉服务&#xff0c;停掉所有ORACLE服务 3、打开注册表&#xff08;REGEDIT命令&#xff09;&#xff0c;删除HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE 4、打开注册表中的 HKEY_LOCAL_MACHINE\SYSTEM\CurrentCont…

Hadoop----hdfs的基本操作

2019独角兽企业重金招聘Python工程师标准>>> HDFS操作文件的基本命令 1.创建文件夹 $>hdfs dfs -mkdir /user/centos/hadoop 2.展示目录 $>hdfs dfs -ls -r /user/centos/hadoop 3.递归展示 $>hdfs dfs -lsr /user/centos/hadoop 4.上传文件 $&g…

原生sql实现restful接口调用

index.php <?phpinclude ./Request.php; include ./Response.php; //获取数据 $dataRequest::getRequest(); $resultResponse::sendResponse($data); echo $result; ?> Request.php <?php class Request{private static $method_typearray(get,post,put,delete,pa…

弹幕效果

<!DOCTYPE html><html> <head> <meta charset"UTF-8"> <title>弹幕效果</title> <script src"../../jquery-1.12.4.min.js" type"text/javascript" charset"utf-8"></script> </h…

基于.NetCore开发博客项目 StarBlog - (21) 开始开发RESTFul接口

1前言最近电脑坏了&#xff0c;开源项目的进度也受到一些影响这篇酝酿很久了&#xff0c;作为本系列第二部分&#xff08;API接口开发&#xff09;的第一篇&#xff0c;得想一个好的开头&#xff0c;想着想着就鸽了好久&#xff0c;索性不扯那么多了&#xff0c;直接开写吧~2关…

03 Oracle分区表

Oracle分区表 先说句题外话… 欢迎成都天府软件园的小伙伴来面基交流经验~ 一&#xff1a;什么是分区&#xff08;Partition&#xff09;&#xff1f; 分区是将一个表或索引物理地分解为多个更小、更可管理的部分。 分区对应用透明&#xff0c;即对访问数据库的应用而言&…

windows获取本地时间_如何在Windows 8中重新获得本地登录

windows获取本地时间By default a fresh Windows 8 installation prompts you to create a synchronized cloud-enabled login. While there are distinct perks to Microsoft’s live login system, sometimes you just want to keep things simple and local. Read on as we …

如何解决高并发,秒杀问题

相信不少人会被这个问题困扰&#xff0c;分享大家一篇这样的文章&#xff0c;希望能够帮到你&#xff01; 一、秒杀业务为什么难做&#xff1f;1&#xff09;im系统&#xff0c;例如qq或者微博&#xff0c;每个人都读自己的数据&#xff08;好友列表、群列表、个人信息&#xf…