• javaBean


    1、什么是内省??
    内省:JDK提供的一套操作JavaBean的API,内省是基于反射技术的,之所以学习内省,是为了更方便的
    操作javaBean.
    2、JavaBean属性计算方法?
    1)、通过Introspector获得JavaBean的类的相关信息
    2)、通过BeanInfo获得方法描述器和属性
    getMethodDescriptors()
    getPropertyDescriotors()----重点
    JavaBean属性的多少不是看那个类中中成员变量的多少,而是通过get和set方法计算得到的:
    例如:假如有一个getName-----去掉get将Name首字母小写-----得到name属性
    由于每一个对象都继承了Object,继承getClass()方法----因此会得到class属性

    3、内省的应用------将Map的key与JavaBean对象属性进行匹配,自动将value值保存到对象中。
    详解:jsp02/demo2...
    其实,之前的<jsp:setProperty property="*" />就是上面的这个原理。(源码看jsp02/demo2..)

    4、在Model1中,完成form参数的传递 ---- JavaBean自动封装
    <jsp:setProperty property="*" name="calculator" />

    5、在Model2中 不可以使用 jsp标签,在Servlet中完成 将form表单中的数据 封装到 javabean对象
    使用内省技术(基于反射,方便操作javabean API )完成form数据 封装 javabean对象 -------- 内省在编写代码上复杂
    BeanUtils 工具包 (完成对javabean封装操作)

    6、BeanUtils一套开发包,Apache公司提供 ,专门进行javabean操作,在web层各种框架中 被使用 例如:struts 使用BeanUtils操作JavaBean
    采用BeanUtils编写快速入门案例
    1)、下载BeanUtils的jar :commons-beanutils 、commons-logging
    BeanUtils依赖 Logging的jar包
    2)、将beanutils和logging的 jar包复制 工程/WebRoot/WEB-INF/lib
    3)、编写BeanUtils的封装程序
    BeanUtils.populate(person, request.getParameterMap());

    如果在Person类添加特殊类型Date类型,对于特殊类型如何封装 ?
    1、自定义转换器 ---- 需要实现Converter接口
    2、在调用populate方法前,注册转换器
    ConvertUtils.register(Converter converter, Class clazz)

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

  • 相关阅读:
    基础练习 分解质因数
    基础练习 矩阵乘法
    基础练习 矩形面积交
    基础练习 完美的代价
    设计模式完结(7)--桥接模式----处理多维度变化
    设计模式完结(6)--适配器模式----不兼容结构的协调
    设计模式完结(5)-建造者模式
    设计模式完结(4)-原型模式
    设计模式完结(3)单例模式
    设计模式读完总结(2)工厂模式
  • 原文地址:https://www.cnblogs.com/ZT-SummerRain/p/6734866.html
Copyright © 2020-2023  润新知