BeanUtils简介

本文详细介绍了Apache的BeanUtils工具包,用于便捷地操作JavaBean。通过BeanUtils,可以快速将HTTP请求参数填充到JavaBean对象中,包括自动类型转换。在遇到特殊类型如日期时,可以使用内置或自定义的转换器。总结了BeanUtils在不同情况下的使用策略,包括何时需要自定义转换器。

本文章将对BeanUtils的使用和数据类型转换等进行介绍。

  1. 什么是BeanUtils

    1.  BeanUtils一套开发包,Apache公司提供 ,专门进行javabean操作,在web层各种框架中被使用,例如:struts 使用BeanUtils操作JavaBean 。

  2. 实例
    1、下载BeanUtils的jar :commons-beanutils 、commons-logging,需要同时下载两个jar包。(BeanUtils依赖Logging的jar包 )
    2、将beanutils和logging的 jar包复制 工程/WebContent/WEB-INF/lib这里写图片描述
  3. 可以快速的将前台接收的数据封装到user对象中。

    1. try {

           BeanUtils.populate(user, request.getParameterMap());

      // System.out.println(user.getUsername());

      } catch (IllegalAccessException e) {

      // TODO Auto-generated catch block

      e.printStackTrace();

      } catch (InvocationTargetException e) {

      // TODO Auto-generated catch block

      e.printStackTrace();

      } ​​ 

    2.  (注意:多选按钮使用数据组接收,也可以用字符串接收(用Arrays.toString()将数据组转换为字符串))

    3. 基础数据类型会自动转换

       

      日期型需要使用转换器

      1. 用自带的转换器

        ConvertUtils.register(new DateLocaleConverter(), Date.class);

        // BeanUtils

        try {

        BeanUtils.populate(user, request.getParameterMap());

        // System.out.println(user.getUsername());

        } catch (IllegalAccessException e) {

        // TODO Auto-generated catch block

        e.printStackTrace();

        } catch (InvocationTargetException e) {

        // TODO Auto-generated catch block

        e.printStackTrace();

        }

      2. 定义一个转换器

        ConvertUtils.register(new Converter() {

        public Object convert(Class arg0, Object value) {

        if (value == null) {

        return null;

        }

        if (!(value instanceof String)) {

        throw new ConversionException("conversion error");

        }

        String star = (String) value;

        if (star.trim().equals("")) {

        return null;

        }

        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

        try {

        return sdf.parse(star);

        } catch (ParseException e) {

        throw new RuntimeException(e);

        }

        }

        }, Date.class);


 

BeanUtils结论

  1. BeanUtils.populate(Object bean, Map properties)方法进行数据封装

  2. 一般其实不需要自定义转换器,只有在特殊情况下才会自定义转换器
    1、如果form参数是String类型,javabean属性String类型 —- 调用BeanUtils.populate 将form数据封装 javabean
    2、如果JavaBean属性类型不是String —- 将form数据封装javabean 需要转换器 —– 在BeanUtils API 提供很多默认转换器(完成常见转换)
    3、如果需要转换类型非常特殊,可以通过自定义转换器完成 定义类实现Converter接口,实现convert方法 ,在populate调用之前通过ConvertUtils.register注册转换器

最通俗的说法,JavaBean就是一个存数据的地方,要么
(1)通过JSP页面中的标签去存储form表单中的数据(action跳转到JSP页面,之后“useBean”,“setProperty”进行数据存储),再在JSP界面中通过“getProperty”显示数据。
(2)在JSP页面中通过action跳转到Servlet程序的url,在Servlet程序中通过BeanUtils工具类的相关方法对JSP页面中的表单信息进行存储。

     

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值