spring复杂数据类型传递
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;
spring复杂数据类型传递的更多相关文章
- spring cloud fegin传递request header
本文链接:https://blog.csdn.net/zhongzunfa/article/details/82791903 1.概述 今天一个朋友, 遇到一个如何在使用spring cloud fe ...
- spring跨重定向传递数据
spring跨重定向传递数据 为何要重定向? 作用之一:防止表单重复提交 如何重定向? // 在控制器方法返回的视图名称中,以redirect:开头的String不是用来查找视图的,而是用来指导浏览器 ...
- java基本数据类型传递与引用传递区别
文章转载自 zejian的博客http://blog.csdn.net/javazejian/article/details/51192130 java的值传递和引用传递在面试中一般都会都被涉及到, ...
- 【spring】ApplicationListener传递参数到页面(解决静态+动态资源路径+静态文件的缓存控制)
一.相对路径还是绝对路径的问题 前端页面加载资源或者请求的时候到底是使用相对路径还是绝对路径,想必大家都很清楚,用的是当然是相对路径,因为这样增加了项目的灵活性,不需要经常的改动.那既然是相对路径就需 ...
- spring MVC中传递的参数对象中包含list的情况
测试需要的jar包:spring 3.2.jar + jackson-all-1.8.5.jar. 写代码时碰到个需要将对象里的子明细一起传递到controller里去,当时就想直接将参数一起传递过 ...
- Spring MVC(七)--传递JSON参数
有时候参数的传递还需要更多的参数,比如一个获取用户信息的请求中既有用户ID等基本参数,还要求对查询结果进行分页,针对这种场景,一般都会将分页参数封装成一个对象,然后将它和基本参数一起传给控制器,为了控 ...
- Spring MVC前传递和后端接收的参数名不一致处理方式
前端传递的变量和后端接收的变量名字不一致时,用注解@RequestParam来实现数据的传递 例如:@RequestParam(value="id") //实现商品的分类目录展现 ...
- spring mvc 如何传递集合参数(list,数组)
spring mvc 可以自动的帮你封装参数成为对象,不用自己手动的通过request一个一个的获取参数,但是这样自动的参数封装碰碰到了集合参数可能就需要点小技巧才可以了. 一.基础类型和引用类型有什 ...
- Spring MVC 之传递模型数据到视图中
类似于 JSP-Servlet 中的 req.setAttribute . req.getSession().setAttribute ... --> 最后在 JSP 用 EL 表达式取得这些数 ...
随机推荐
- TCP/IP协议中的UDP与TCP的区别
TCP面向连接,UDP面向非连接即发送数据前不需要建立链接TCP提供可靠的服务(数据传输),UDP无法保证,它没有TCP的接受确认.窗口等机制,因此也不需要交换控制信息:发生丢包也一概不负责.TCP面 ...
- 扫描算法(SCAN)——磁盘调度管理
原创 上一篇博客写了最短寻道优先算法(SSTF)——磁盘调度管理:http://www.cnblogs.com/chiweiming/p/9073312.html 此篇介绍扫描算法(SCAN)——磁盘 ...
- 手动安装R包
1,先将R包下载到本地 2,getwd() setwd("F:\\CNV\\Paper\\Case-control\\mHMM") 3, install.packages(&quo ...
- R语言学习笔记(二十一五):如何如何提升R语言运算的性能以及速度
在R中获得快速运行代码的方法 使用向量化运算 R语言的并行计算可以用parallel和foreach包 加快R运行速度还可以使用cmpfun()函数即字节码编译器 再者就是在R中调用C或C++ 同时还 ...
- 20155211实验2 Windows口令破解
20155211实验2 Windows口令破解 实验目的 了解Windows口令破解原理 对信息安全有直观感性认识 能够运用工具实现口令破解 实验原理 口令破解方法 口令破解主要有两种方法:字典破解和 ...
- 20155226 实验四 Android开发基础
20155226第四次实验报告 一.实验内容及步骤 Android Stuidio的安装测试: 安装 Android Stuidio 完成Hello World, 要求修改res目录中的内容,Hell ...
- week8课上实践
课上练习. 第一题: 参考 http://www.cnblogs.com/rocedu/p/6766748.html#SECCLA 在Linux下完成"求命令行传入整数参数的和" ...
- 电脑开机svchost.exe报错
一.问题: 这几天电脑开机一直弹出一个对话框说:svchost.exe文件不能运行,百度后发现是用于动态运行库的依赖(dll),不过不知道是个啥东西 二.解决: 开机弹框虽然不影响电脑的使用,但是看着 ...
- swift 解决tableView的Y值偏移64问题
// 起始坐标按0点开始计算 self.edgesForExtendedLayout = UIRectEdge.init(rawValue: 0) // tableView的坐标系 tableView ...
- 【CF908G】New Year and Original Order
[CF908G]New Year and Original Order 题面 洛谷 题解 设\(f[i][j][k][l]\)表示当前在第\(i\)位有\(j\)位大于等于\(k\),当前有没有卡上界 ...