版权声明:本站所提供的文章资讯、软件资源、素材源码等内容均为本作者提供、网友推荐、互联网整理而来(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考,如有侵犯您的版权,请联系我,本作者将在三个工作日内改正。 https://blog.csdn.net/weixin_42323802/article/details/83040687
声明本测试使用JDK9,Tomcat9.0.10 ,IDEA2018.2 ;
浅谈 BeanUtils 的封装 , BeanUtils 类中方法 populate (Object bean, Map properties ); 用于把 form 提交的表单中数据封装在 bean中;
request 中相比于 getParameter ( 标签 id ) 单个获取 属性值将 ,提高效率简化代码;
抽取为MyBeanUtils 以后,更为便捷 ,jar 下载地址 repository 仓库搜索下载: 使用 maven 可直接配置 依赖;
抽取的工具类如下:
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 的成员属性如下:
普通代码来获取并封装数据如下 ,其实也没多少 一顿复制也可以完成,再多一些就凉凉了:
//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 下即可;