`

BeanUtil使用例子:解析并转化HttpServletRequest到Bean的全面测试

    博客分类:
  • J2SE
阅读更多
转载:http://www.java2000.net/p15636
1 先看解析类
package com.laozizhu.util;

import java.lang.reflect.InvocationTargetException;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.beanutils.ConvertUtils;
import org.apache.commons.beanutils.converters.DateConverter;

/**
 * 将HttpServletRequest解析并注入到Bean里面的辅助类。
 * 
 * @author 老紫竹研究室(laozizhu.com)
 */
public class RequestToBean {
  static {
    DateConverter d = new DateConverter();
    String[] datePattern = { "yyyy-mm-dd", "yyyy/mm/dd", "yyyy.mm.dd" };
    d.setPatterns(datePattern);
    ConvertUtils.register(d, java.util.Date.class);
  }

  public static void populate(HttpServletRequest request, Object obj) {
    Map map = request.getParameterMap();
    try {
      BeanUtils.populate(obj, map);
    } catch (IllegalAccessException e) {
      e.printStackTrace();
    } catch (InvocationTargetException e) {
      e.printStackTrace();
    }
  }
}

2 测试用的基础类
package com.laozizhu.util.test;

import java.util.Date;

/**
 * 基础数据类,包括常见的数据类型。
 * 
 * @author 老紫竹研究室(laozizhu.com)
 */
public class Base {
  private long id;

  private String name;

  private float weight;

  private double height;

  private Date birthday;

  // 喜爱的数字
  private int[] numberFavorite;

  private boolean married;

  public boolean isMarried() {
    return married;
  }

  public void setMarried(boolean married) {
    this.married = married;
  }

  public long getId() {
    return id;
  }

  public void setId(long id) {
    this.id = id;
  }

  public String getName() {
    return name;
  }

  public void setName(String name) {
    this.name = name;
  }

  public Date getBirthday() {
    return birthday;
  }

  public void setBirthday(Date birthday) {
    this.birthday = birthday;
  }

  public float getWeight() {
    return weight;
  }

  public void setWeight(float weight) {
    this.weight = weight;
  }

  public double getHeight() {
    return height;
  }

  public void setHeight(double height) {
    this.height = height;
  }

  public int[] getNumberFavorite() {
    return numberFavorite;
  }

  public void setNumberFavorite(int[] numberFavorite) {
    this.numberFavorite = numberFavorite;
  }
}


3 测试用的JSP代码
<%@page c%>
<%@page import="com.laozizhu.util.*,com.laozizhu.util.test.*"%>
<%
  String title = "老紫竹研究室类库演示程序-基础测试:整数、浮点数、字符串、日期、多选数字、布尔";
%>
<html>
<head>
<title><%=title%></title>
</head>
<body>
<%
  request.setCharacterEncoding("UTF-8");
  Base b = new Base();
  RequestToBean.populate(request, b);
%>
<%=title%>
<br />
编号:<%=b.getId()%><br />
名字:<%=b.getName()%><br />
身高:<%=b.getHeight()%><br />
体重:<%=b.getWeight()%><br />
生日:<%=b.getBirthday()%><br />
婚否:<%=b.isMarried()%><br />
数字:<%
  if (b.getNumberFavorite() != null)
    for (int num : b.getNumberFavorite()) {
      out.print(num + ",");
    }
%>
<form method="post"><br />
编号:<input type="text" name="id" value="1" /><br />
名字:<input type="text" name="name" value="老紫竹" /><br />
身高:<input type="text" name="height" value="173.5" /><br />
体重:<input type="text" name="weight" value="90.3" /><br />
生日:<input type="text" name="birthday" value="2009-01-23" /><br />
婚否:<input type="radio" name="married" value="1" checked />已婚,& lt;input type="radio" name="married" value="0" />未婚<br />
数字:<br />
<%
  for (int i = 0; i <= 9; i++) {
%> <input type="checkbox" name="numberFavorite" value="<%=i %>" <%=i%3==0?" checked":"" %> /><%=i%><br />
<%
  }
%> <input type="submit" value="提交测试" /><br />
</form>
</body>
</html>


4 运行结果
老紫竹研究室类库演示程序-基础测试:整数、浮点数、字符串、日期、多选数字
编号:1
名字:老紫竹
身高:173.5
体重:90.3
生日:Fri Jan 23 00:01:00 CST 2009
婚否:true
数字:0,3,6,9,
分享到:
评论

相关推荐

    beanutil数据库操作工具

    6. **空值处理**:在填充Java Bean时,BeanUtil可以设置策略来处理数据库中的空值,如将其转化为Java的null,或者默认值。 7. **自定义转换规则**:对于一些特殊需求,如特定字段的转换逻辑,BeanUtil允许用户...

    BeanUtil框架完整包

    - **版本兼容性**:不同版本的BeanUtils可能存在功能差异或API变化,升级时需要检查文档并测试。 总的来说,BeanUtil框架是Java开发中的一个实用工具,能够有效减少处理Java Bean的代码量,提高开发效率。但在使用...

    BeanUtil1.8 SRC 源码和 jar包

    这个jar包可以被添加到项目的类路径中,使得开发者可以在项目中直接使用BeanUtil提供的功能,如动态地获取、设置Bean的属性,以及进行Bean之间的复制等。在实际开发中,我们可以利用这些功能,大大减少代码量,提高...

    BeanUtil_Jar包

    总的来说,“BeanUtil_Jar包”作为一款成熟的JavaBean操作工具,因其便捷、灵活和全面的特性,已经在众多项目中得到广泛应用。无论是新手还是经验丰富的开发者,都应该掌握这个工具,以提高工作效率,减少代码冗余。...

    BeanUtil Jar包

    《BeanUtil:Apache提供的高效Java反射工具包》 在Java编程中,BeanUtil是一个非常重要的工具包,尤其在处理对象的属性操作时,它扮演着不可或缺的角色。BeanUtil源自著名的开源组织Apache,是其 Commons BeanUtils...

    BeanUtil工具类

    BeanUtil 主要用于实体Bean和Map之间的互转,使用方便,是一个不可多得的工具类哦

    Servlet中对获取网页表单数据自动给JavaBean赋值的BeanUtil工具类

    当用户通过网页表单提交数据时,Servlet通常负责接收这些数据并将其保存到JavaBean对象中,以便后续业务逻辑处理。为了简化这一过程,开发者经常使用工具类BeanUtil,它能够自动将HTTP请求参数映射到JavaBean的属性...

    BeanUtil_MYSQL_mybaatis_

    总结来说,BeanUtil是一个提高开发效率的工具,它通过解析Java Bean对象,自动生成符合MySQL语法的SQL语句,简化了在MyBatis框架下的数据库操作。这样的工具在大型项目中尤其有用,减少了手动编写SQL的工作量,同时...

    bean和map之间转换的帮助类

    主要实现bean和map之间的相互转换,主要提供两个方法beanToMap将bean转换成Map 和mapToBean 将Map转换成bean 每次下载都没有积分,不差积分的大神赞助点呗 写了这一小段代码,供新手学习,大神就别拍砖了 身板弱扛...

    BEANutil工具类,可获取生日

    BEANutil工具类,可获取生日,简单的几行代码,给需要的你。BEANutil工具类,可获取生日,简单的几行代码,给需要的你。

    BeanUtil.rar

    BeanUtil需要的jar包和源码文件,commons-beanutils-1.8.0.jar,commons-beanutils-1.8.0-javadoc.jar,commons-beanutils-1.8.0-sources.jar,commons-beanutils-bean-collections-1.8.0.jar,commons-beanutils-...

    beanutil的jar包打包

    **标题解析:** "beanutil的jar包打包" 指的是将Apache Commons BeanUtils相关的类库打包成一个或多个JAR(Java Archive)文件。BeanUtils是Java开发中常用的工具包,它提供了对Java Bean操作的各种便利方法,如...

    消息队列监听器无法注入bean的问题解决

    在Java开发中,我们可能会遇到“消息队列监听器无法注入bean的问题”,这个问题通常涉及到Spring框架和消息队列的集成,如RabbitMQ或ActiveMQ等。本文将围绕这个主题,结合提供的文件,分析问题并提供解决方案。 ...

    BeanUtil.java

    BeanUtil.java

    commons-beanutil-1.7.0-src

    这个"commons-beanutil-1.7.0-src"压缩包包含了BeanUtils库的源代码,版本号为1.7.0,是开发者理解和自定义此库功能的重要资源。以下是关于Apache Commons BeanUtils库及其1.7.0版本的一些关键知识点: 1. **...

    改进的BeanUtil包

    修改内容: 1.org.apache.commons.beanutils.converters包下增加了UtilDateConverter类 2.修改了org.apache.commons.beanutils.converters包下的StringConverter类 3.ConvertUtilsBean类中的public void ...

    beanutil资料

    Apache BeanUtils是Apache软件基金会开发的一个Java库,主要用于简化Java Bean对象之间的属性操作。...通过阅读API文档和实践使用,开发者可以更好地掌握这一强大的库,并将其应用到自己的项目中。

    一种简单的json解析方法

    使用这些工具,我们可以轻松地将JSON数据解析为Java对象并进行反向操作。例如,从服务器接收的JSON响应可以这样处理: ```java String responseJson = "{\"code\":200,\"message\":\"Success\",\"data\":{\"id\":1,...

    BeanUtil属性拷贝工具类

    BeanUtil属性拷贝工具类,支持基本的javabean属性拷贝,通过java反射和泛型编程实现了list属性拷贝

Global site tag (gtag.js) - Google Analytics