zoukankan      html  css  js  c++  java
  • Java:JavaBean和BeanUtils

     


    本文内容:

    • 什么是JavaBean
    • JavaBean的使用
    • BeanUitls
    • 利用DBUtils从数据库中自动加载数据到javabean对象中

     

    首发日期:2018-07-21

     

     


    什么是JavaBean

     

    • JavaBean是一种遵循开发规范的一种类。在JavaWeb开发中,经常用来存储实体信息,比如用户实体信息,实体信息不应该是散乱的,它应该是一个整体(就好像从数据库取出一个用户的年龄,id,手机等数据,这些数据应该归属于一个对象,而不应该用某个单纯变量来存储),所以才需要javabean。而为了规范开发,以及规范使用规则,所以需要按照一定规则来定义JavaBean。
    • 只有符合以下规则的才是一个javabean:
      • 必须要有一个无参构造函数【一些地方的javabean的使用需要利用反射,所以需要无参构造函数】
      • 所有属性必须私有化【私有规则】
      • 私有化的属性必须提供public类型的getter、setter方法,对于boolean类型的可以使用isXxx来代替。【getXxx()和setXxx()中的属性名首字母要大写(这是一种规则,不然的话,一些例如jsp中的使用“对象.属性名”将无法获取,因为调用的是对应的getter函数)】

     

     


    JavaBean的使用

     

     

    JavaBean的定义:

    image

     

     

     

    在以前,因为jsp中存在<jsp:usebean>标签可以直接创建一个javabean对象,所以以前也会这样使用。但由于开发规范化【页面和功能相分离】和技术更新,已经逐渐少使用这个方法。不过这里还是演示一下

    jsp中的用法:

    创建对象:

    <jsp:useBean id="对象名" class="类字节码路径" scope="域对象"/>【scope是指这个对象放到哪里去】
    赋值对象:
    <jsp:setProperty property="属性名" name="对象名" value="值" />
    获取:

    <jsp:getProperty property="属性名"  name="对象名"  />

    【由于jsp有很多获取对象的属性方法,所以上面仅仅是指能直接创建对象的用法】

     

     

    现在一般都是直接封装数据后直接传给jsp使用,所以jsp中处理的就是取值问题而已。如何封装才是servlet的问题(这里以基础的servlet为例)。

    Servlet中的用法:

    在servlet中封装信息:

    image

    在jsp中获取:

    image

     

     

     


    BeanUitls

     

    • BeanUtils是Apache开发的一种工具。
    • BeanUtils可以帮助我们把属性封装到javabean对象的对应属性中,比如可以把提交的表单数据封装到一个实体对象中。
    • 封装时要求参数名称和javabean的属性名相同

     

     

    使用:

    1.导入必须包:主要是logging包和beanutils包image

    • commons‐beanutils‐1.9.3.jar 【工具核心包 ​】
    • commons‐logging‐1.2.jar 【日志记录包 ​】
    • commons‐collections‐3.2.2.jar 【增强的集合包】

    2.把包右键build path-->add to build path

    3.调用函数:

    • 根据属性名手动赋值:这种方式与普通的一个个set没什么区别,少用为妙

    image

    • 自动对应赋值:【下面给的map是表单提交的,但其他的map也是可以的,只要key与属性名相同】

    image

     

     

     

    数据转换问题:

    如上所示,当使用自动赋值时,BeanUtils会帮助我们把值赋给bean,不过你可能没留意的是,提交上来的age是字符串的,但还是成功赋值给bean中的int类型的age了。这是因为BeanUtils有基本类型转换机制,String之类的可以转成基本数据类型。

    但非基本数据类型之间是没有默认转换机制的,所以需要你自己去定义。当然BeanUtils也给了我们不少可以用来转换的转换器image下面以自定义的时间转换器String转Date为例,表单提交的日期是字符串的:

    1.定义转换器类(实现Converter),也可以用匿名实现类来定义

    image

    2.注册转换器:ConvertUtils.register(转换器对象,类型.class)【注意不要导错类型】

    image

     

     

     

    其他有用的功能:

    • 属性拷贝:把一个javaBean的属性拷贝到另一个javaBean对象中

    BeanUtils.copyProperties(destinationObj,sourceObj)【第一个参数是目的地,第二个是拷贝源;如果第二个参数是map类型的,那么与populate功能类似;两个参数中间还可以提供一个String类型的参数,代表只复制某一个参数】

    • 获取指定属性:BeanUtils.getProperty(bean,name)【如果指定的属性不存在,则会抛出异常】

     

    补充:

    • BeanUtils除了赋值这个大功能外,还有不少小功能,但可能比较少有,如果你想要了解更多可以自己去看一下它有什么函数,可以根据函数名和参数类型来揣测函数的功能。

     


    从数据库中自动加载数据到javabean中

     

    可以参考我的另外一篇博文""中的DBUtils的使用来了解jdbc中是如何从数据库中自动加载数据到javabean中

     https://www.cnblogs.com/progor/p/9096463.html

     


  • 相关阅读:
    搭建微信公众号,获取用户公开信息
    搭建ES搜索引擎,实时导入mysql数据进行查询
    切换linux的shell
    隐藏CMD窗口,使程序在后台执行
    通过ssh远程查看java版本与在客户端查看不一致
    项目升级tomcat,修复漏洞
    springboot重定向后,https变成http
    【数论】【Polya定理】【枚举约数】【欧拉函数】【Java】poj2154 Color
    【数论】【Polya定理】poj1286 Necklace of Beads
    【置换群】poj3270 Cow Sorting
  • 原文地址:https://www.cnblogs.com/progor/p/9344707.html
Copyright © 2011-2022 走看看