从http请求参数构造实例的最佳方法

时间:2013-04-18 17:25:30

标签: java java-ee servlets constructor http-request-parameters

在我的项目中,我有:

  1. 以用户个人资料信息作为参数处理http请求的servlet,即(userName =" Bob",password =" ugaBaga",address =" blabla& #34; ...)

  2. 表示用户信息的User类。 getters + setters:getName(),setName(String username)....

  3. 我的问题是,是否有一种从httpRequest参数创建新用户实例的简单方法?

    类似的东西:

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

    (无需为每个30~字段编写:user.setName(parameters.getParameter(" userName"))

    p.s - 我并没有真正发送密码,我无法想到一个字段名称。 密码由短信发送;)

    提前感谢!

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

Java Ecosystem中有几个MVC框架可以处理特定类的问题 - 绑定请求参数到特定类 - 我最喜欢的一个Spring MVC。根据{{​​3}}框架的一个好处是:

  

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

因此使用Spring Framework不需要手工绑定:Spring会为您做到这一点。所以如果不是Spring Site的信徒,你应该尝试MVC框架,不管是不是Spring。

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