栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

JavaWeb-BeanUtils的使用

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JavaWeb-BeanUtils的使用

当我们指定了一个想要的JavaBean对象后,BeanUtils工具类可以一次性地从客户端传过来的所有参数中选择该JavaBean类setXxx()方法中,与xxx同名的参数封装到该JavaBean对象中返回,如果某个setYyy()方法中对应的yyy属性不在客户端传进来的参数名中,则设置为 null 返回。

举个例子,当我们做用户登录、用户注册模块时,我们都需要使用 req.getParameter() 把 username 和 password 等信息封装到一个 User 的JavaBean中传给 UserService 服务层进行处理。那么,我们在每一个功能中都要写类似于这种代码:

protected void login(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
	String username = req.getParameter("username");
	String password = req.getParameter("password");
	// 获得其他属性...

	userService.login(new User(username, password, ...));
}

这个步骤非常麻烦,我们可以直接使用一个BeanUtils工具包,来辅助我们完成封装这个过程。

BeanUtils 工具包不是 Jdk 提供的类,而是第三方提供的,因此需要我们导入 jar 包进工程中:commons-beanutils-1.8.0.jar 和 其依赖的 jar 包 commons-logging-1.1.1.jar 。

然后我们再在工程中的 utils 包下,自定一个 WebUtils 工具类,来使用 BeanUtils 给我们提供的方法:

public class WebUtils {
	
	public static  T copyParamToBean(Map value, T bean) {
		try {
			// populate() 方法可以将 req.getParameterMap() 返回的所有参数封装进JavaBean
			BeanUtils.populate(bean, value);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return bean;
	}
}

那么,我们以后可以直接通过如下方法封装客户端发来的 JavaBean

protected void login(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
	User user = WebUtils.copyParamToBean(req.getParameterMap(), new User());
	userService.login(user);
}

要求:客户端发来的标签的 name 值,必须和 JavaBean 中的属性名一致,BeanUtils 的 populate() 方法本质是利用字符串匹配结合反射机制,调用JavaBean中的 setXxx() 方法实现的,如果客户端传来的 getParameterMap() 中没有某一个属性,则默认为 null。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/490121.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号