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