http://hi.baidu.com/smilelive/blog/item/e31b8f50ea1ef212367abe77.html

web开发中,肯定会设计到表单的提交,而表单一般都设计到一个表,表又对应一个javabea。一般我们都在重复大量的request.getParameter();和x.setXX();这种操作。那么有没有什么办法可以简化上面的操作?

假定我们有个User类,属性name,sex,age;一个jsp或html页面,有一个表单表单属性name,sex,age和javabean对应。一个处理表单上传的servlet。

这里主要说这个Servlet的功能:

Enumeration en = request.getParameterNames();//获得所有请求的参数
User user = new User();
Field[] fs = user.getClass().getDeclaredFields();//获得user类的所有属性列表
while (en.hasMoreElements()) {//遍历请求参数
String param = en.nextElement().toString().trim();//获得属性名
for (int i = 0; i < fs.length; i++) {//遍历user类的属性列表
if (!fs[i].getName().equals(param)) {//如果属性名和请求参数名不等则继续,这里这样写了为了减少if else的嵌套;
continue;
}
fs[i].setAccessible(true);//设置属性为可改变,反射中private的属性是不能被访问的,设置Accessible为true则该属性可访问
Object value = null;
if (fs[i].getType().getName().equals("java.lang.String")) {//判断属性类型一般的javabean属性类型都要定义成为八大基本数据类型和八大基本类型的扩展数据类型,最多再加上Date和Time等常用数据类型。
value = request.getParameter(param).toString();
} else if (fs[i].getType().getName().equals("int")) {
value = Integer.parseInt(request.getParameter(param).trim());
}
try {
fs[i].set(user, value);//设置属性的值
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
break;
}
}

System.out.println(user.getName()+"\t"+user.getAge()+"\t"+user.getSex());

这样的一个Serlvet只能设置一个类的值,想设置多个类的值,可以在url后面加一个参数,比如xx.do?jb=com.up72.bean.User,Servlet对象的创建修改为

String className = request.getParameter("jb");

Object javabean = Class.forName(className).newInstance();

其他操作不变。

当然,更好的办法是写一个配置文件,通过读取配置文件来初始化bean,这个还前面的简单Servlet结合起来基本就可以完成简单的struts的核心控制器的功能了。不过还有文件上传的问题没有解决。

借助mootools 快速开发一个重用 ajax 提交方式
http://jhaij.iteye.com/blog/1136595
(这篇文章里演示了如何使用自动封装)

更多相关文章

  1. ***100分,谁有用java mail做的把表单直接发送到邮箱的网页例子,发
  2. 包含带标记的值的XML属性文件
  3. JAVA中的反射只获取属性的get方法
  4. 如何在Spring中读取具有相同键的多个属性?
  5. 为泛型类的泛型方法的属性赋值 - Java
  6. 如何在Spring Data(JPA)派生查询中按多个属性排序?

随机推荐

  1. Eclipse打开出错:Java wa started but ret
  2. Java String类具体解释
  3. javascript获得客户端IP的又一方法
  4. 根据用户的动态字段对链接列表进行排序
  5. (翻译)Java使用POI中的SXSSF处理大数据量
  6. 爬虫6:多页面增量Java爬虫
  7. JAVA-简单Swing图形化界面
  8. java 正则表达式查找某段字符串中所有小
  9. 黑马程序员——Java学习笔记 String类和
  10. 帮别人宣传哈—》JAVA高并发编程(后面会自