javaweb 一键封装(BeanUtils)

来源:互联网 发布:成都淘宝运营招聘 编辑:程序博客网 时间:2024/06/09 20:43

需求:在提交注册页面的表单数据时,需要把数据提交到服务器,封装bean对象


在服务器端:

  1. 获取用户提交的数据

       String id = ---   String name =---   String password=---   String email=---   String phone=---   -----

    把数据手动封装到User对象
    User user = new User();
    user.setXXX(XXXX);

  2. 完成注册,调用service
    UserService service = new UserService();
  3. 去执行UserService
  4. 去执行UserDao

封装一个工具类:完成表单数据自动封装到对象里面
* Introspector: javaBean的描述类
* BeanInfo: 通过上面的类,得到javaBean里面的属性,方法等
* PropertyDescriptor: 里面才是真正有属性和 方法


User类

package com.monster.beanUtils;public class User {    private Integer id;    private String name;    private String password;    public Integer getId() {        return id;    }    public void setId(Integer id) {        this.id = id;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public String getPassword() {        return password;    }    public void setPassword(String password) {        this.password = password;    }    @Override    public String toString() {        return "User [id=" + id + ", name=" + name + ", password=" + password                + "]";    }}

BeanPushUtlis类

package com.monster.beanUtils;import java.beans.BeanInfo;import java.beans.Introspector;import java.beans.PropertyDescriptor;import java.lang.reflect.Method;import java.util.LinkedHashMap;import java.util.Map;import java.util.Set;public class BeanPushUtlis {    //把数据自动封装到bean对象,user    public static void  push(Object obj) throws Exception{        //1.获取user的描述类        BeanInfo  info = Introspector.getBeanInfo(obj.getClass());        //2.获取user里面的属性和方法: setXXX        PropertyDescriptor[] ps = info.getPropertyDescriptors();        //3.遍历数组        for (PropertyDescriptor por : ps) {            //4.获取user里面的属性名称            String attrName = por.getName();            //5.获取属性里面的读方法,写方法            Method  readMethod = por.getReadMethod();            Method  writeMethod = por.getWriteMethod();            System.out.println(attrName+" "+ readMethod+" "+ writeMethod);        }    }    //把数据自动封装到bean对象, Map<String,Object> map = request.getParameterMap();    // map的key: name属性的值,和 javaBean的属性名称一致    //map的value: 用户输入的值    public static void  pop(Object obj,Map<String,Object> map ) throws Exception{        //1.获取user的描述类        BeanInfo  info = Introspector.getBeanInfo(obj.getClass());        //2.获取user里面的属性和方法: setXXX        PropertyDescriptor[] ps = info.getPropertyDescriptors();        //3.遍历map,获取map的key ,和 属性描述器的属性名称进行匹配        Set<String> keys = map.keySet();        for (String key : keys) {//key就是name属性的值 , 和PropertyDescriptor的属性匹配            for (PropertyDescriptor por: ps) {//里面的属性 其实就是javaBean的属性名称                String userAttr = por.getName();                if(key.equals(userAttr)){//表单提交的name属性值  和  javaBean的属性名称一致                    //获取写方法                    Method setMethod = por.getWriteMethod();                    setMethod.invoke(obj,map.get(key));// new User().setId("001");                }            }        }    }    public static void main(String[] args) throws Exception {        User user = new User();        //Map map = request.getParameterMap();        Map<String,Object> map = new LinkedHashMap<String,Object>();        map.put("id", 100);        map.put("name", "张三");        map.put("passwordss", "123456");        BeanPushUtlis.pop(user,map);        System.out.println(user);    }}
原创粉丝点击