JavaBean规范和jsp中的javabean标签 中间带了点BeanUtils包

javaBean:一般javabean放在domain包里面

  • 必须为成员提供get/set方法(两者中只提供一个也是可以的)
  • 必须要有默认构造器(没参的)
  • 一般对于具有get/set方法的成员变量称之为属性
  • 布尔值属性开头可以是get也可以是is

内省就是通过反射来操作javabean,但他比使用反射要方便一些

内省类->bean信息->属性描述符->属性的get/set对应的Method->接下去就反射了
我们需要提供javaBean类

BeanInfo info=Introspector.getBeanInfo(User.class)  得到javaBean的BeanInfo

commons-beanutils:依赖内省完成

导包> commons-beanutils.jar
          commons-logging.jar
 

public class BeanUtilsLearn {
    @Test
    public void fun() throws Exception{
          String className="com.cn.domain.User";
          Class cl=Class.forName(className);
          Object bean=cl.newInstance();
          BeanUtils.setProperty(bean, "name", "陈陈陈");
          BeanUtils.setProperty(bean, "age", 23);  
          int age=Integer.parseInt(BeanUtils.getProperty(bean, "age"));//返回String,强转
          System.out.println(BeanUtils.getProperty(bean, "name"));
          System.out.println(age);
    }
}

 
1.

  String className = "xxx.xxx.";
  Class beanClass = Class.forName(className);
  Object beanInstance = beanClass.newInstance();

2.

  public class Employee {
             public Employee();   // Zero-arguments constructor
             public String getFirstName();
             public void setFirstName(String firstName);
             public String getLastName();
             public void setLastName(String lastName);
             public Date getHireDate();
             public void setHireDate(Date hireDate);
             public boolean isManager();
             public void setManager(boolean manager);
             public String getFullName();
         }

太简单了吧。。。都不用反射了。。。是吧。。。

用BeanUtils 把map中的数据封装成javabean

    @Test
    /**
     * 把map中的属性直接封装到一个bean中
     * Map:{"name":"zhang","age","111"}
     * 我们要把map中的数据封装到一个javabean中要求map的键要和bean的属性相同
     */
    public void map() throws Exception{
        Map<String,String> map=new HashMap<String,String>();
        map.put("name", "陈陈");
        map.put("age", 12+"");
        User u=new User();
        BeanUtils.populate(u, map);
        System.out.println(BeanUtils.getProperty(u, "name"));
        System.out.println(BeanUtils.getProperty(u, "age"));
    }

 
  
写一个工具类


public class ChenUtils {
    /**
     * @throws Exception 
     * @throws InstantiationException 
     * 
     */
    public static <T>T toBean(Map map,Class<T> clazz ) throws InstantiationException, Exception{
        /**
         * 1.创建指令类型的javaBean
         */
        T bean=clazz.newInstance();
        /**
         * 2.把数据封装到javabean中
         */
        BeanUtils.populate(bean, map);
        /**
         * 3.返回javabean对象
         */
        return bean;
    }
}

测试工具类

public class TestUtils {
    @Test
  public void te() throws Exception{
      User user;
      Map<String,String> map=new HashMap<String,String>();
      map.put("name", "阿毛");
      map.put("age", 22+"");
      user=ChenUtils.toBean(map,cl);
      System.out.println(BeanUtils.getProperty(user,"name"));
  }
}


 
jsp中的javabean标签,已经不用

jsp中与javaBean相关的标签   这是model1全用jsp时候的事情,知道就好了。已经不用了。
  <jsp:useBean>  创建或查找bean
       <jsp:useBean  id="user1" class="com.cn.domain.User" scope="session"/> scope可以是page request session application
  <jsp:setProperty>
       <jsp:setProperty property="username" name="user1" value="admin"/>

  <jsp:getProperty>
       <jsp:getProperty property="username" name="user1"/>获取名为user1的javabean的名为username属性值
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章