`
coolbi
  • 浏览: 85432 次
  • 性别: Icon_minigender_1
  • 来自: 重庆&南京
社区版块
存档分类
最新评论

表单到VO值对象的映射(转载)

阅读更多

  项目中,往往有从表单到值对象的映射。

以下是一个通用的类:

public class ObjectMapping
{
	/**
	 * 映射html表单为对应的vo对象,当前可以映射String,int,double,boolean,float
	 * @param 对应的vo对象
	 * @param request HttpServletRequest
	 * @return 映射后的对象
	 */
	public static Object mappingFieldsToObject(Class c, HttpServletRequest request)
	{
		// 得到所有的请求参数
		Enumeration enums = request.getParameterNames();
		Object o = null;
		try
		{
			o = c.newInstance();
		}
		catch (InstantiationException e1)
		{
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}
		catch (IllegalAccessException e1)
		{
			e1.printStackTrace();
		}
		// 从JavaBean中得到所有的方法
		Method[] methods = c.getDeclaredMethods();
		String tem1 = "";
		while (enums.hasMoreElements())
		{
			tem1 = (String) enums.nextElement();
			if (tem1 != null && !"".equals(tem1))
			{
				String methodName = "set" + tem1.substring(0, 1).toUpperCase();
				if (tem1.length() > 1)
				{
					methodName += tem1.substring(1);
				}
				for (int i = 0; i < methods.length; i++)
				{
					if (methodName.equals(methods[i].getName()))
					{
						Method method = methods[i];
						if (method.getParameterTypes()[0] == String.class)
						{
							String param = null2String(request
									.getParameter(tem1));
							try
							{
								method.invoke(o, new Object[]{param});
							}
							catch (Exception e)
							{
								e.printStackTrace();
								System.out.println("注入值时出错");
							}

						}
						else if (method.getParameterTypes()[0] == int.class)
						{
							String param = null2Zero(request.getParameter(tem1));
							Integer intParam = null;
							try
							{
								intParam = Integer.valueOf(param);
							}
							catch (NumberFormatException e1)
							{
								intParam = new Integer(0);
							}
							try
							{
								method.invoke(o, new Object[]
								{
									intParam
								});
							}
							catch (Exception e)
							{
								e.printStackTrace();
								System.out.println("注入值时出错");
							}

						}
						else if (method.getParameterTypes()[0] == float.class)
						{
							String param = null2Zero(request.getParameter(tem1));
							Float floatParam = null;
							try
							{
								floatParam = Float.valueOf(param);
							}
							catch (NumberFormatException e1)
							{
								floatParam = new Float(0.0F);
							}
							try
							{
								method.invoke(o, new Object[]
								{
									floatParam
								});
							}
							catch (Exception e)
							{
								e.printStackTrace();
								System.out.println("注入值时出错");
							}

						}
						else if (method.getParameterTypes()[0] == double.class)
						{
							String param = null2Zero(request.getParameter(tem1));
							Double doubleParam = null;
							try
							{
								doubleParam = Double.valueOf(param);
							}
							catch (NumberFormatException e1)
							{
								doubleParam = new Double(0);
							}
							try
							{
								method.invoke(o, new Object[]
								{
									doubleParam
								});
							}
							catch (Exception e)
							{
								e.printStackTrace();
								System.out.println("注入值时出错");
							}

						}
						else if (method.getParameterTypes()[0] == boolean.class)
						{
							String param = null2String(request
									.getParameter(tem1));
							if (!"true".equals(param))
							{
								param = "false";
							}
							Boolean booleanParam = Boolean.valueOf(param);
							try
							{
								method.invoke(o, new Object[]
								{
									booleanParam
								});
							}
							catch (Exception e)
							{
								e.printStackTrace();
								System.out.println("注入值时出错");
							}
						}
						break;
					}

				}
			}

		}
		return o;
	}

	private static String null2Zero(String str)
	{
		if (str == null || "".equals(str.trim()))
		{
			return "0";
		}
		return str.trim();
	}

	private static String null2String(String str)
	{
		if (str == null)
		{
			return "";
		}
		return str.trim();
	}

}

 

 

分享到:
评论

相关推荐

    springmvc传值对象及拦截器

    Spring MVC的模型绑定功能可以自动将请求参数映射到VO对象的属性上,简化了开发工作。 接着,我们来谈谈"拦截器"。在Spring MVC中,拦截器(Interceptor)是一种预定义的处理程序,可以对请求和响应进行拦截,执行...

    SSH 项目框架搭建总结

    cn.itcast.elec.web.form:封装值对象(VO对象),对应页面传递的表单值的属性 junit:测试类 * 配置文件 放置到src的目录下: beans.xml:spring的配置文件 hibernate.cfg.xml:hibernate的配置文件 struts....

    J2EE架构数据表示:Struts+Hibernate

    然后,业务层的Bean处理业务逻辑,并通过DAO(数据访问对象)调用ORM(对象关系映射,如Hibernate)将数据持久化到数据库。 当用户查询信息时,Action会根据前端的输入(如全名)构建相应的查询条件,转换成PO,...

    commons-beanutils-1.8.3

    - **批量复制**:`copyProperties()`方法可以方便地将一个对象的所有属性值复制到另一个对象,极大地减少了代码量。 - **空值处理**:当尝试设置的属性值为null时,BeanUtils会自动跳过,不会抛出异常。 3. **...

    struts2_开始.doc

    2. **基于 Vo(Value Object)对象(Domain 对象)**:若需将多个相关属性封装到一个对象中,可以在 Action 类中创建一个域对象的引用,如 `User` 类。表单中使用 `name=user.context` 和 `name=user.no` 来绑定数据...

    struts2传递参数及ModelDriven的使用示例

    例如,在`main.jsp`中可以使用表单元素将数据提交到服务器,然后在Action类中通过`@ActionParams`注解或者getter/setter方法接收这些参数。 3. **ModelDriven模式**:这是Struts2提供的一种简化开发的模式,用于...

    ssh 架构描述

    3. Action从ActionFormBean中提取数据,创建业务对象(VO或PO),并调用Spring管理的Service接口。 4. Service层执行业务逻辑,可能包括调用DAO来完成数据库操作。 5. DAO通过Hibernate API与数据库交互,完成数据的...

    Struts2 技术内幕读书笔记(1)

    - **VO(ValueObject)**:值对象,用于封装数据,常用于数据传输。 - **DTO(DataTransferObject)**:数据传输对象,用于不同系统间的数据传递。 - **FormBean**:表单对象,用于处理表单数据。 3. **对象的...

    SSH(Spring+Struts+Hibernate)

    在SSH框架中,数据的流动过程通常是这样的:JSP页面上的表单数据提交到Action,Action从ActionFormBean中获取数据,封装成VO(Value Object,值对象)或PO(Persistent Object,持久对象),然后调用Service层的方法...

    SSH框架开发

    - Action类处理表单数据,封装成VO或PO对象,调用由Spring管理的Service层。 - Service层执行业务逻辑,可能涉及到DAO层操作。 - DAO层通过Hibernate与数据库交互,执行SQL语句。 - Service层处理完后,将结果返回给...

    SSH框架整合[总结].pdf

    在SSH框架整合中,数据流通常如下:用户在JSP页面上填写表单,数据通过ActionFormBean传递到Action,Action处理数据并创建VO(Value Object)或PO对象,然后调用Spring管理的Service。Service进一步调用DAO接口,DAO...

    struts2 ValidateDeamo

    在Struts2中,通常将表单字段映射到Action类的属性,然后在Action类中定义验证规则。例如,创建一个`UserVO`类,包含用户名、密码等属性,然后在Action类中引用这个VO,进行对应的验证。 5. **TestVistor 文件** `...

    NC初级培训-框架,环境,流程

    4. **VO(值对象)**:用于数据传输的对象,可以是数据库表的映射。 5. **聚合VO**:当单据涉及主表和子表时,聚合VO封装了主表和一组子表的VO,用于表示单据的完整数据。 6. **UI工厂**:提供了单据开发的框架,...

    struts基础入门笔记

    - **继承ActionForm**:所有的表单VO类都需要继承自 `ActionForm` 类。 ```java public class UserForm extends ActionForm { private String username; private String password; // Getters and Setters ...

    SSH详细简介

    Hibernate提供了从Java类到数据表的映射,也提供了数据查询和恢复等机制,大大减少数据访问的复杂度。Hibernate的主要作用是: * 提供从Java类到数据表的映射 * 提供数据查询和恢复等机制 * 将对数据库的直接操作,...

    struts1和struts2的增删改查

    2. 读取(Read):通常通过ID查询数据,Action获取到数据后将其封装到VO或BO对象,然后转发到显示详情的JSP页面。 3. 更新(Update):用户编辑表单,提交后调用UpdateAction,Action会更新数据并保存。 4. 删除...

    Struts In Action

    首先,"commons-scaffold.zip"包含了Struts框架中的公共模版或基础结构,它可能包含了一些常用的Action类、Form Bean、以及与业务逻辑交互的DAO(数据访问对象)和VO(值对象)。 Commons Scaffold是Struts中用于...

    结合struts和hibernate谈J2EE架构的数据表示.doc

    在架构流程中,用户提交表单后,Struts的Action从JSP接收FormBean,然后根据需要构建PO对象。Action不直接处理数据库操作,而是调用业务层的Business Bean。Business Bean负责业务逻辑,它可能根据需要转换或合并多...

Global site tag (gtag.js) - Google Analytics