读书人

自动将Request中的参数信息打包到Java

发布时间: 2012-06-26 10:04:13 作者: rapoo

自动将Request中的参数信息封装到JavaBean中

Web开发中一个很频繁的操作就是从Request中取得客户端传递过来的参数信息,然后Servlet(或是struts的Action,SpringMVC的Controller)接收这些参数,调用Service层完成业务逻辑操作,为了避免出现太多的Request.getParameter(),我们可以模仿struts的FormBean自己写一个收集参数的工具类,不求有多强大,但求实用。下面贴出的这段代码,FormBean中的属性支持基本类型和基本类型的数组,没有做自定义类型,不是不能做,而是我觉得WEB层更面向数据一些反而更好操作(Service层倒是可以更面向对象一些)

?

?

package org.qxh.util;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Date;import java.util.Map;import javax.servlet.http.HttpServletRequest;import org.apache.commons.beanutils.BeanUtils;import org.apache.commons.beanutils.ConvertUtils;import org.apache.commons.beanutils.Converter;/** * eg: ?id=1&id=2&id=3&name=test&birthday=1988-10-30&birthday=1988-12-08 15:45:30 * @author qinxiaohui01 * */public class WebUtil {public static <T> T requestParam2Bean(HttpServletRequest request,Class<T>  beanClass){try{T bean = beanClass.newInstance();Map map = request.getParameterMap();ConvertUtils.register(new Converter(){public Object convert(Class type, Object value) {if(value==null){return null;}String str = ((String) value).trim();if(str.trim().equals("")){return null;}Date d = null;SimpleDateFormat format = null;if(str.length()>10){if(str.indexOf("-")>0){format = MyDateFormat.getFormat("yyyy-MM-dd HH:mm:ss");} else {format = MyDateFormat.getFormat("yyyy/MM/dd HH:mm:ss");}} else {if(str.indexOf("-")>0){format = MyDateFormat.getFormat("yyyy-MM-dd");} else {format = MyDateFormat.getFormat("yyyy/MM/dd");}}try {d = format.parse(str);} catch (ParseException e) {throw new RuntimeException(e);}return d;}}, Date.class);BeanUtils.populate(bean, map);   return bean;}catch (Exception e) {throw new RuntimeException(e);}}}
?

?

?

读书人网 >软件架构设计

热点推荐