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 {
	/**
	* 将 Map 中的值注入到对应的 JavaBean中
	*/
	public static <T> 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);
}

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

铁头娃撞碎南墙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值