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

    xiaoxiao2021-03-25  90

    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属性值
    转载请注明原文地址: https://ju.6miu.com/read-16145.html

    最新回复(0)