- 浏览: 222239 次
- 性别:
- 来自: 上海
-
文章分类
最新评论
-
julyboxer:
http://www.baobao5u.com/Product ...
喝茶的十八个层次,你属于哪一层? -
xiaolong0211:
呵呵,学习了,这两天一直在装gcc,可算装上了,谢谢
Red Hat enterprise 5 gcc安装顺序 -
run_xiao:
翻译的不是很到位啊
推荐引擎mahout相关资料 -
julyboxer:
关键价值链
B2C网络站点资源梳理 -
julyboxer:
要买的书http://product.dangdang.com ...
B2C网络站点资源梳理
mport java.lang.reflect.Method;
import java.util.Date;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
public class BeanBind {
public static Log log = LogFactory.getLog(BeanBind.class);
// choose the appropriate method to invoke and set the class properity
public static Method select(Method[] method, String name, Class clz) {
Method methods=null;
for (int i = 0; i < method.length; i++) {
int a = method[i].getName().length();
if (method[i].getName().substring(3, a).equalsIgnoreCase(name)
&& (method[i].getName().startsWith("set"))) {
log.info("get the appropriate method: "+clz.getClass()+"."+method[i].getName());
return method[i];
}
}
System.out.println("check");
return null;
}
//get the data from request and bind into Class clz
public static Object bind(Class clz,HttpServletRequest request) throws InstantiationException,
IllegalAccessException {
java.lang.reflect.Field[] field = clz.getDeclaredFields();
Method[] method = clz.getDeclaredMethods();
Object obj = clz.newInstance();
System.out.println("field.length: "+field.length);
for (int i = 0; i < field.length; i++) {
String parser = null;
Method meod = null;
String type = field[i].getType().getSimpleName();
String str = field[i].getName();
parser=request.getParameter(str);
meod = select(method, str, clz);
log.info("method: "+meod.getName()+ " bind the properity: "+str+" value : "+parser);
if (type.equalsIgnoreCase("String")) {
try {
Object[] arg = { parser };
System.out.println("String");
meod.invoke(obj, arg);
} catch (Exception e) {
log.error("String value: "+parser+ "invoke error: "+clz.getName());
}
} else if (type.equalsIgnoreCase("Integer")) {
try {
Object[] arg = { Integer.valueOf(parser) };
meod.invoke(obj, arg);
} catch (Exception e) {
log.error("Integer value: "+parser+ "invoke error: "+clz.getName());
}
} else if (type.equalsIgnoreCase("Double")) {
try {
Object[] arg = { Double.valueOf(parser) };
meod.invoke(obj, arg);
} catch (Exception e) {
log.error("Double value: "+parser+ "invoke error: "+clz.getName());
}
} else if (type.equalsIgnoreCase("Float")) {
try {
Object[] arg = { Float.valueOf(parser) };
meod.invoke(obj, arg);
} catch (Exception e) {
log.error("Float value: "+parser+ "invoke error: "+clz.getName());
}
} else if (type.equalsIgnoreCase("date")) {
try {
Date date = new Date(parser);
Object[] arg ={ date };
meod.invoke(obj, arg);
} catch (Exception e) {
log.error("Date value: "+parser+ "invoke error: "+clz.getName());
}
}
System.out.println("ahaha");
}
return obj;
}
}
具体的调用方法如下.相应的值是从HttpRequest (Form表单)获取 关于验证方法可以在JavaBean中自己定义一个validator方法.然后动态调用
User user=new User();
Class clzs=user.getClass();
user=(User) BeanBind.bind(clzs, request);
import java.util.Date;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
public class BeanBind {
public static Log log = LogFactory.getLog(BeanBind.class);
// choose the appropriate method to invoke and set the class properity
public static Method select(Method[] method, String name, Class clz) {
Method methods=null;
for (int i = 0; i < method.length; i++) {
int a = method[i].getName().length();
if (method[i].getName().substring(3, a).equalsIgnoreCase(name)
&& (method[i].getName().startsWith("set"))) {
log.info("get the appropriate method: "+clz.getClass()+"."+method[i].getName());
return method[i];
}
}
System.out.println("check");
return null;
}
//get the data from request and bind into Class clz
public static Object bind(Class clz,HttpServletRequest request) throws InstantiationException,
IllegalAccessException {
java.lang.reflect.Field[] field = clz.getDeclaredFields();
Method[] method = clz.getDeclaredMethods();
Object obj = clz.newInstance();
System.out.println("field.length: "+field.length);
for (int i = 0; i < field.length; i++) {
String parser = null;
Method meod = null;
String type = field[i].getType().getSimpleName();
String str = field[i].getName();
parser=request.getParameter(str);
meod = select(method, str, clz);
log.info("method: "+meod.getName()+ " bind the properity: "+str+" value : "+parser);
if (type.equalsIgnoreCase("String")) {
try {
Object[] arg = { parser };
System.out.println("String");
meod.invoke(obj, arg);
} catch (Exception e) {
log.error("String value: "+parser+ "invoke error: "+clz.getName());
}
} else if (type.equalsIgnoreCase("Integer")) {
try {
Object[] arg = { Integer.valueOf(parser) };
meod.invoke(obj, arg);
} catch (Exception e) {
log.error("Integer value: "+parser+ "invoke error: "+clz.getName());
}
} else if (type.equalsIgnoreCase("Double")) {
try {
Object[] arg = { Double.valueOf(parser) };
meod.invoke(obj, arg);
} catch (Exception e) {
log.error("Double value: "+parser+ "invoke error: "+clz.getName());
}
} else if (type.equalsIgnoreCase("Float")) {
try {
Object[] arg = { Float.valueOf(parser) };
meod.invoke(obj, arg);
} catch (Exception e) {
log.error("Float value: "+parser+ "invoke error: "+clz.getName());
}
} else if (type.equalsIgnoreCase("date")) {
try {
Date date = new Date(parser);
Object[] arg ={ date };
meod.invoke(obj, arg);
} catch (Exception e) {
log.error("Date value: "+parser+ "invoke error: "+clz.getName());
}
}
System.out.println("ahaha");
}
return obj;
}
}
具体的调用方法如下.相应的值是从HttpRequest (Form表单)获取 关于验证方法可以在JavaBean中自己定义一个validator方法.然后动态调用
User user=new User();
Class clzs=user.getClass();
user=(User) BeanBind.bind(clzs, request);
发表评论
-
网页设计步骤
2010-04-20 15:37 931第1章 用户体验为什么如此重要 日常生活中的遭遇 什么 ... -
Unix的5种I/O模型
2009-03-30 16:00 30791、阻塞I/O 2、非阻塞I/O ... -
使用异步 I/O 大大提高应用程序的性能
2009-03-30 15:21 1195http://www.ibm.com/developerwor ... -
WSAD环境下JMS异步通信全攻略
2009-03-18 12:03 760http://tech.ccidnet.com/art/981 ... -
java线程的缺陷
2009-03-14 21:59 1196Java 编程语言的线程模型可能是此语言中最薄弱的部分。它完 ... -
Java NIO类库Selector机制解析
2009-03-02 11:45 1864Java NIO 类库 Selector ... -
Java远程通讯可选技术及原理
2009-02-23 11:07 953在分布式服务框架中,一个最基础的问题就是远程服务是怎么通讯的, ... -
ConcurrentHashMap原理分析
2009-02-14 13:38 2114集 合是编程中最常用 ... -
AOP 的利器:ASM 3.0 介绍
2009-02-13 14:05 11912007 年 7 月 25 日 随着 AOP(Aspec ... -
JVM小记2
2009-01-17 16:03 946JVM执行引擎: 方法 ... -
JVM小记
2009-01-08 15:33 1006JVM内存分布 方法区:包 ... -
socket, nio socket 及nio socket框架MINA总结
2008-12-21 15:03 3184最近花了点时间研究了一下nio,及其开源框架MINA,现把心得 ... -
大型网站架构分析收集
2008-11-26 22:17 2090. PlentyOfFish 网站架构学习 http://ww ... -
java深度clone
2008-11-14 14:47 1311public Object deepClone() ... -
20081107总结
2008-11-08 17:03 870今天是一个特别的 ... -
JAVA中的指针,引用及对象的clone
2008-09-04 19:22 834Java语言的一个优点就是取消了指针的概念,但也导致了许多程序 ... -
weblogic 9 远程调试
2008-07-11 17:22 1367在startWebLogic.cmd中加入 set JAVA_ ... -
JVM调优总结
2008-07-09 19:55 1165http://pengjiaheng.spaces.live. ... -
JFreeChart增强JSP报表的用户体验 (精品 )
2008-05-27 22:17 1046http://tech.it168.com/j/2007-09 ... -
Java是传值还是传引用
2008-05-27 10:09 9541. 简单类型是按值传递的 Java 方法的参数是简单类 ...
相关推荐
动态调用方法在许多场景下都非常有用,比如在框架开发、数据绑定、代码生成以及处理未知类型的数据时。然而,反射也有其潜在的风险,如性能损耗和安全性问题,因此在使用时需要谨慎。 在设计模式方面,JavaBean常常...
将JavaBean转换为Map是一种常见的需求,特别是在处理数据绑定、JSON序列化或者存储时。标题“Desktop_javaBean转换Map工具_”暗示了这是一个方便的工具或代码片段,用于快速将JavaBean实例转换为Map对象。 描述中...
通过上述步骤,我们可以编写一个通用的工具方法,接受类名、属性名和值作为参数,利用反射填充JavaBean的属性。这样的实现对于处理大量相似对象的初始化或数据绑定场景非常有用,例如在数据持久化、JSON序列化/反...
在Java编程中,JavaBean和Map之间的转换是常见的操作,特别是在数据绑定和数据处理的场景。下面我们将详细探讨如何实现这种转换以及相关的封装类方法。 首先,JavaBean是一种符合特定规范的Java类,通常用于封装...
- `ReflectTester`类的`copy()`方法利用反射创建了一个与输入对象相同类型的副本,并将属性值复制过去。这是通过获取属性的`get`和`set`方法实现的,适用于简单的JavaBean。 4. **使用反射的注意事项** - 性能...
在`ReflectTester`类中,`copy()`方法利用反射来复制一个对象的所有属性到新创建的同类型对象中,这展示了如何使用反射访问和设置JavaBean的属性,前提是JavaBean的属性有对应的getter和setter方法。 总的来说,...
它首先获取对象`obj`的类,然后调用`getPropertyDescriptor()`获取对应的`PropertyDescriptor`,接着从`PropertyDescriptor`中获取`set`方法,最后使用`invoke()`方法调用`set`方法,将`value`值设置到对象的属性上...
- 重写`invoke`方法以添加特定的处理逻辑。 - 在Axis配置文件中注册Handler。 4. **应用场景** - 安全认证:实现身份验证和授权机制。 - 日志记录:记录服务调用的详细信息。 - 性能优化:实现缓存或其他优化...
通过内省,开发者可以轻松地实现对JavaBean属性的自动化操作,提高代码的可维护性和可扩展性。 总的来说,Java内省提供了一种强大的工具,让我们能够在运行时动态地探索和操作Java对象,特别是对于符合JavaBean规范...
最后,使用`Method.invoke()`方法执行这些方法,实现了动态地设置和获取属性值。 Apache Commons BeanUtils库进一步简化了内省操作。在示例中,虽然没有直接使用,但`BeanUtils`类提供了便捷的API来复制属性、设置...
6. **利用jacob转换为Word**:使用Jacob的`ActiveXComponent`对象,例如`com.jacob.com.Dispatch`,打开一个Word应用实例,然后调用`com.jacob.activeX.ActiveXComponent.invoke`方法,将生成的Word内容写入一个新的...
- 静态内部类与外部类之间没有绑定关系,可以独立使用,不需要创建外部类的对象。 **8. 构造代码块和构造函数的区别** - **构造代码块**: 在每次创建对象时都会执行的一段代码,用于初始化对象的属性。 - **构造...
JavaBean遵循特定的编程约定,包括具有公有无参构造函数、属性由私有变量表示,并提供对应的getter和setter方法。如示例中的`UserInfo`类,它包含`userId`, `userName`, `age`和`emailAddress`等属性,每个属性都有...
5. **Invoke Application**:调用后端业务方法。 6. **Render Response**:渲染响应,返回给客户端。 ### 六、JSF事件处理 JSF允许定义事件监听器,处理用户交互或组件间通信。事件通过事件队列传播,允许组件根据...
1. **组件**:JSF提供了丰富的UI组件库,如按钮、文本框、表单等,这些组件可以直接在页面上使用,并且可以方便地进行数据绑定和事件处理。 2. **Facelets**:Facelets是JSF推荐的视图表示技术,它是一种XML-based...
- **Spring MVC**:基于Spring框架,提供了丰富的特性,如自动绑定请求参数到模型对象、灵活的结果视图渲染等。 - **Struts2**:基于WebWork框架发展而来,具有强大的插件系统和丰富的标签库。 - **Ruby on Rails**...