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屬性值
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章