反射封装request参数为对象
来源:互联网 发布:ip摄像头破解软件 编辑:程序博客网 时间:2024/06/05 03:45
public class RequestUtil { public static<T> T parseRequset( HttpServletRequest request,Class<T> c){ T t=null; try { t=c.newInstance();//根据反射生成实例对象 Method[] ms=c.getMethods(); Map<String,String[]> map=request.getParameterMap(); //map.entrySet()是将map里的每一个键值对//取出来封装成一个Entry对象在存到一个Set集合里面 //Map.Entry<String[], String>的意思是一个泛型,表//示Entry里装的String[]数组和string的字符串,分别是//key和value for(Map.Entry<String,String[]> entry:map.entrySet()){ String key=entry.getKey(); String[] values=entry.getValue(); if(values!=null&&values.length>1){ continue; } String v=values[0]; key="set"+key; for(Method m:ms){ if(key.equalsIgnoreCase(m.getName())){ String parameterTypeName=m.getParameterTypes()[0].getName(); if("int".equals(parameterTypeName)||"java.lang.Integer".equals(parameterTypeName)){ m.invoke(t, Integer.parseInt(v)); }else if("float".equals(parameterTypeName)||"java.lang.Float".equals(parameterTypeName)){ m.invoke(t, Float.parseFloat(v)); }else if("double".equals(parameterTypeName)||"java.lang.Double".equals(parameterTypeName)){ m.invoke(t, Double.parseDouble(v)); }else if("long".equals(parameterTypeName)||"java.lang.Long".equals(parameterTypeName)){ m.invoke(t, Long.parseLong(v)); }else if("short".equals(parameterTypeName)||"java.lang.Short".equals(parameterTypeName)){ m.invoke(t, Short.parseShort(v)); }else if("java.lang.String".equals(parameterTypeName)){ m.invoke(t,v); } break; } } } } catch (Exception e) { e.printStackTrace(); throw new RuntimeException(e); } return t; }
public Object invoke(Object obj,Object args[])
参数:
obj - 从中调用底层方法的对象,必须是实例化的对象
args - 用于方法调用的参数,是个Object数组,因为参数有可能有多个
返回:
使用参数 args 在 obj 上指派该对象所表示方法的结果
例如:String result = (String)method.invoke(obj , sql);
执行obj的method方法(参数为sql),返回String类型结果
args参数可以为空,就是对应方法没有参数,
如:new Car().getBM() —- method.invoke( obj );//method为getBM,obj为Car类
obj可以为空,但必填null,表示同类中的公用方法,
如:getName( type ) —- method.invoke( null , args);//method为getName,args为type
。
2 0
- 反射封装request参数为对象
- javascript封装url中参数为对象
- java_jdbc_反射技术将查询结果封装为对象
- 利用反射技术将查询结果封装为对象
- 将request参数转化为bean的 万能类 (使用了泛型和反射)
- 把request对象中的请求参数封装到bean中/生成UUID
- 把request对象中的请求参数封装到bean中的工具类
- 在HttpServletRequest request获得参数,通过类的set方法封装到对象中
- JSONObject 转换为 request 参数
- request内置对象---参数传递
- request 对象获取参数值
- request对象获取客户端参数
- 通过JAVA反射实现简单的ORM,将查询结果封装为对象
- JDBC_利用Java反射技术将查询结果封装为对象
- 反射的应用 将form表单的数据自动封装为对象
- JDBC之利用反射技术将查询结果封装为对象
- JS实现StringFormat和Request对象封装
- JavaEE中request对象的请求参数为中文,获取时出现乱码问题的解决
- linux安装
- 【数据结构】实现一个栈,要求实现Push(出栈)、Pop(入栈)、Min(返回最小值的操作)的时间复杂度为O(1)
- 局部变量,静态局部变量,全局变量,静态全局变量在内存中的存放区别
- 遵守了CLLocationManagerDelegate协议,为什么不调用代理方法
- jsp页面跳转
- 反射封装request参数为对象
- 面向对象的4要素:抽象,封装,继承,多态
- 生活博客搬迁
- git分支的合并
- 分割字符串
- NOIp 前N天做题
- 2015NOIP模拟赛(一) 试题及解析
- 如何解决 ORA-28595: Extproc 代理: DLL 路径无效
- Python/scikit-learn机器学习库(特征选取)