浅谈web工程中BeanUtils的封装MyBeanUtils,populate方法使用 【接收前端form表单数据】

声明本测试使用JDK9,Tomcat9.0.10 ,IDEA2018.2  ;

 

浅谈  BeanUtils 的封装 , BeanUtils  类中方法  populate  (Object  bean,  Map  properties ); 用于把 form 提交的表单中数据封装在 bean中;

request  中相比于 getParameter (   标签 id )  单个获取 属性值将 ,提高效率简化代码;

抽取为MyBeanUtils 以后,更为便捷  ,jar 下载地址   repository  仓库搜索下载:  使用 maven 可直接配置 依赖;

浅谈web工程中BeanUtils的封装MyBeanUtils,populate方法使用 【接收前端form表单数据】


抽取的工具类如下: 

package com.baidu.utils;
import org.apache.commons.beanutils.BeanUtils;
import java.util.Map;
/**
 * @auther SyntacticSugar
 * @data 2018/10/13 0013下午 1:45
 */
public class MyBeanUtils {
    public static <T>T populate(Class<T> clazz, Map<String, String[]> map){
        Object obj=null;
        try {
            obj = clazz.getDeclaredConstructor().newInstance();
            BeanUtils.populate(obj, map);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return (T)obj;
    }
}

 实例中使用场景,主要在注册 时候 form  表单提交的数据 进行封装  ;

实体bean ,User  类的成员属性 很多的时候 ,从request 请求中一个个获取  表单数据 效率低下 ,例如以下User 的成员属性如下:

浅谈web工程中BeanUtils的封装MyBeanUtils,populate方法使用 【接收前端form表单数据】

浅谈web工程中BeanUtils的封装MyBeanUtils,populate方法使用 【接收前端form表单数据】 

普通代码来获取并封装数据如下 ,其实也没多少  一顿复制也可以完成,再多一些就凉凉了:

  //1.获取用户数据   封装到User对象中
        String id = request.getParameter("id");
        String name = request.getParameter("name");
        String sex = request.getParameter("sex");
        String address = request.getParameter("address");
        String email = request.getParameter("email");
        String qq = request.getParameter("qq");
        String age = request.getParameter("age").equals("")?"18":request.getParameter("age");

        //2.封装数据
        User user = new User();
        user.setId(Integer.valueOf(id));
        user.setName(name);
        user.setSex(sex);
        user.setAddress(address);
        user.setEmail(email);
        user.setQq(qq);
        user.setAge(Integer.valueOf(age));

使用工具类进行封装数据:

User user = MyBeanUtils.populate(User.class, request.getParameterMap());

就一句话,没看错,如果异常直接try/catch  下即可;