1.VO对象与PO对象的区别:

PO(persistant object) 持久对象:通常对应数据模型(数据库),本身还有部分业务逻辑的处理。可以看成是与数据库中的表相映射的java对象。最简单的PO就是对应数据库中某个表中的一条记录,多个记录可以用PO的集合。PO中应该不包含任何对数据库的操作。

VO(value object) 值对象:通常用于业务层之间的数据传递,和PO一样也是仅仅包含数据而已。

相同:

都是Javabean,都是由一组属性和属性的get和set方法组成

区别:(意义和本质不同)

①PO对象中的属性关联数据库的字段 
②VO对象中的属性可以随意增加、修改、删除,对应的页面表单属性

一个VO可以只是PO的部分,也可以是多个PO构成,同样也可以等同于一个PO(指的是他们的属性)。

2.值对象封装信息(VO)

表单的input里的name必须要与VO对象的属性名称一致

 <%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<c:set var="basePath" value="${pageContext.request.contextPath }"></c:set>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
${pageContext.request.contextPath }
<form action="${basePath }/person/welcome.action" method="post">
<input type="text" name="person.name">
<input type="number" name="person.age"> <input type="text" name="list[0]">
<input type="text" name="list[1]">
<input type="text" name="list[2]"> <input type="text" name="map['map1']">
<input type="text" name="map['map2']"> <input type="text" name="strings[0]">
<input type="text" name="strings[1]"> <input type="submit" value="提交">
</form>
<span>${dataVo.person.name }</span>
<span>${dataVo.person.age }</span>
<span>${dataVo.list[0] }</span>
<span>${dataVo.list[1] }</span>
<span>${dataVo.list[2] }</span>
<span>${dataVo.map["map1"] }</span>
<span>${dataVo.map["map2"] }</span>
<span>${dataVo.strings[0] }</span>
<span>${dataVo.strings[1] }</span> </body>
</html>
    @RequestMapping("/welcome.action")
public String welcome(DataVo dataVo,ModelMap modelMap){
System.out.println(dataVo);
modelMap.put("dataVo", dataVo);
return "login";
}
 public class DataVo {
private Person person;
private List<String> list;
private Map<String,String> map;
private String[] strings;

最新文章

  1. app之间的跳转,进入二级界面
  2. 使用nodejs+express(4.x+)实现文件上传
  3. XIII Open Cup named after E.V. Pankratiev. GP of Asia and South Caucasus
  4. C++多继承的观察和7点体会(都是实用派的观点) good
  5. css+div网页设计(一)--基础知识
  6. 【翻译】在Ext JS 5种使用ViewControllers
  7. sqrt()平方根计算函数的实现1——二分法
  8. 微服务框架下的思维变化-OSS.Core基础思路
  9. [随笔][胡思乱想][唠叨][web server]
  10. Oracle的to_char()函数使用
  11. PHP查询数据库较慢,nginx 超时 返回 504:Sorry, the page you are looking for is currently unavailable.
  12. VueRouter 源码深度解析
  13. SQL错误
  14. 兵器簿之github的配置和使用
  15. Spring系列之——使用了哪些设计模式
  16. [BZOJ4820]硬币游戏 KMP+高斯消元
  17. Loadrunner 怎么将response的数据下载下来
  18. 【UVA】11825 Hackers&#39; Crackdown(状压dp)
  19. hibernate规避SQL注入实例
  20. MySQL事务实现原理

热门文章

  1. Altiun designer问题汇总(不断更新)
  2. Go类型特性-学习笔记
  3. SQL学习笔记:高级教程
  4. 为树莓派添加一个强实时性前端[原创cnblogs.com/helesheng]
  5. dotnet Core 2.0学习笔记(一)
  6. drag element
  7. CF 1093 E. Intersection of Permutations
  8. sqlserver 导出数据到Excel
  9. bootstrap 4 panels已被card替换
  10. Intellif IDEA 自带数据库管理工具 DataBase 配置