javaBean:一般javabean放在domain包里面
必须为成员提供get/set方法(两者中只提供一个也是可以的)必须要有默认构造器(没参的)一般对于具有get/set方法的成员变量称之为属性布尔值属性开头可以是get也可以是is内省就是通过反射来操作javabean,但他比使用反射要方便一些
内省类->bean信息->属性描述符->属性的get/set对应的Method->接下去就反射了 我们需要提供javaBean类
BeanInfo info=Introspector.getBeanInfo(User.class) 得到javaBean的BeanInfocommons-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属性值