1

In my project i have:

  1. a servlet that handles http requests with users profile info as parameters, i.e (userName = "Bob" , password = "ugaBaga", address = "blabla"... )

  2. a User class that represents the user info. getters + setters : getName(), setName(String username)....

my question is , is there an easy way to create a new user instance from the httpRequest parameters?

something like :

User newUser = createUserFromParams (new User(), httpRequestParameters);

(without the need to write : user.setName(parameters.getParameter("userName")) for each of my 30~ fields)

p.s - I'm not really sending a password, i couldn't think of a fieldname. the passwords are being sent by sms's ;)

thanks in advance!

4

2 回答 2

0

有 HttpServletRequest.getParameterMap,但它提供了一个Map<String, String[]>你可以拥有的 `?a=1&a=2'。所以像 BeanUtils 这样的东西是行不通的。

但是您可以使用 java 反射创建自己的实用程序类,或者将请求参数转换为Map<String, String>并使用标准 bean 实用程序 ( apache )。

于 2013-04-18T17:33:09.860 回答
0

Java 生态系统中有几个 MVC 框架可以处理特定问题 - 将请求参数绑定到特定类 - 这是我最喜欢的一个 Spring MVC。根据Spring Site的框架的好处之一是:

将参数绑定到的命令/表单对象:作为 bean 属性或字段,具有可自定义的类型转换,具体取决于 @InitBinder 方法和/或 HandlerAdapter 配置

因此,使用 Spring Framework 无需手工绑定:Spring 为您完成了这项工作。所以如果不是NIH 哲学的信徒,你应该尝试一个 MVC 框架,不管是不是 Spring。

PS:如果您仍然不能使用 MVC 框架,您可以使用HttpServletRequest.getParameterMap()古老的 Apache Commons (方法的 JavaDocBeanUtils.populate()中的更多信息)为您进行绑定。

于 2013-04-18T19:20:30.240 回答