• JavaBean


    **1、JavaBean概述
    1.1、什么是JavaBean
    JavaBean是一种规范,也就是对类的要求。它要求java类的成员变量提供getter/setter方法,
    这样的成员变量被称之为JavaBean属性
    JavaBean还要求类必须提供仅有的无参构造器。
    1.2、JavaBean属性
    JavaBean属性是具有getter/setter方法的成员变量
    *也可以只提供getter方法,这样的属性叫只读属性
    *也可以只提供setter方法,这样的属性叫只写属性
    *如果属性类型为boolean类型,那么读方法的格式可以是get或is。例如:
    名为abc的boolean类型的属性,它的读方法可以是getAbc(),或是isAbc().

    >JavaBean 可能存在属性,但不存在这个成员变量

    **2、内省
    内省的目标是得到JavaBean属性的读,写方法的反射对象,通过反射对JavaBean的属性进行操作
    的一组API。
    2.1、内省之获取BeanInfo
    通过java.beans.Introspector的getBeanInfo()方法来获取java.beans.BeanInfo实例:
    BeanInfo beanInfo = Introspector.getBeanInfo(User.class);
    2.2、得到所有属性描述符(PropertyDescriptor)
    通过BeanInfo可以得到这个类的所有JavaBean属性的PropertyDescriptor对象。然后就可以
    通过PropertyDescriptor对象得到这个属性的getter/setter方法的Method对象了。
    PropertyDescriptor[] pds = beanInfo.getPropertyDescriptors();

    >每个PropertyDescriptor对象对应一个JavaBean属性
    * String getName():获取JavaBean属性名称
    * Method getReadMethod():获取属性的读方法
    * Method getWriterMethod():获取属性的写方法

    2.3、完成Map数据封装到User对象中
    public void fun() throws Exception{
    Map<String,String> map = new HashMap<String,String>();
    map.put("username","admin");
    map.put("password","admin123");

    BeanInfo beanInfo = IntroSpector.getBeanInfo(User.class);

    PropertyDescriptor[] dps = beanInfo.getPropertyDesciptors();

    User user = new User();
    for(PropertyDescriptor pd : pds){
    String name = pd.getName();
    String value = map.get(name);
    if(value != null){
    Method writeMethod = pd.getWriteMethod();
    writeMethod.invoke(user,value);
    }
    }
    }

    **3、commons-beanutils工具
    它底层使用了内省,对内省进行了简化.
    >使用beanuitls需要的jar包
    *commons-beanutils.jar
    *commons-logging.jar

    3.1、设置JavaBean属性
    User user = new User();
    BeanUtils.setProperty(user,"username","admin");
    BeanUtils.setProperty(user,"password","admin123");

    3.2、获取JavaBean属性
    User user = new User("admin","admin123");
    String username = BeanUtils.getProperty(user,"username");
    String password = BeanUtils.getProperty(user,"password");

    3.4、封装Map数据到JavaB对象中
    Map<String,String> map = new HashMap<String,String>();
    map.put("username","admin");
    map.put("password","admin123");

    User user = new User();

    BeanUtils.populate(user,map);

    **4、JSP与JavaBean相关的动作标签
    在JSP中,与JavaBean相关的标签有:
    * <jsp:userBean>:创建JavaBean对象
    * <jsp:setProperty>:设置JavaBean属性
    * <jsp:getProperty>:获取JavaBean属性

    >先建一个JavaBean类:
    public class User {
    private String username;
    private String password;

    public User(String username, String password) {
    this.username = username;
    this.password = password;
    }
    public User() {
    }
    public String getUsername() {
    return username;
    }
    public void setUsername(String username) {
    this.username = username;
    }
    public String getPassword() {
    return password;
    }
    public void setPassword(String password) {
    this.password = password;
    }
    public String toString() {
    return "User [username=" + username + ", password=" + password + "]";
    }
    }

    4.1、<jsp:useBean>
    <jsp:useBean>标签的作用是创建JavaBean对象
    * 在当前JSP页面创建JavaBean对象
    * 把创建的JavaBean对象保存到域对象中
    <jsp:useBean id = "user1" class="cn.domain.Uesr"/>
    上述代码表示在当前jsp页面中创建User类型的对象,并且把它保存到page域中了。
    等同于如下代码:
    <%
    cn.domain.User user1 = new cn.doamian.User();
    pageContext.setAttribute("user1",user1);
    %>

    <jsp:useBean>标签默认是把JavaBean对象保存到page域,还可以通过scope标签属性来
    指定保存的范围。
    <jsp:useBean id = "user1" class="cn.domain.User" scope="page"/>
    <jsp:useBean id = "user2" class="cn.domain.User" scope="request"/>
    <jsp:useBean id = "user3" class="cn.domain.User" scope="response"/>
    <jsp:useBean id = "user4" class="cn.domain.User" scope="application"/>

    <jsp:useBean>标签其实不一定会创建对象!!!其实它会先在指定范围中查找这个对象,
    如果对象不存在才会创建,我们需要重新对它进行翻译:
    <jsp:useBean id="user4" class="cn.domain.User" scope="applicatioin"/>
    <%
    cn.domain.User user4 = (cn.domain.User)application.getAttribute("user4");
    if(user4 == null){
    user4 = new cn.domain.User();
    application.setAttribute("user4",user4);
    }
    %>

    4.2、<jsp:setProperty> 和 <jsp:getProperty>
    <jsp:setProperty>标签的作用是给JavaBean设置属性值,而<jsp:getProperty>是用来
    获取属性值。在使用它们之前要先创建JavaBean.
    <jsp:useBean id="user1" class="cn.domain.User" />
    <jsp:setProperty property="username" name="user1" value="admin" />
    <jsp:setProperty property="password" name="user1" value="admin123" />

    用户名:<jsp:getProperty property="username" name="user1" /><br/>
    密 码:<jsp:getProperty property="password" name="user1" /><br/>

  • 相关阅读:
    Swift和OC混编
    Excel数据导入___你hold住么(一)
    Cocos2d-x 3.0多线程异步资源载入
    FPGA实现网络通信时的网络字节序问题
    easyui datagrid 动态加入、移除editor
    struts.xml中出现extends undefined package struts-default解决的方法
    Maven入门
    后面需要继续完善的地方
    CentOS6.9 安装OpenResty
    数据库异步写入功能概要设计
  • 原文地址:https://www.cnblogs.com/trister/p/4601956.html
Copyright © 2020-2023  润新知