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对象的属性名称一致

 1 <%@ page language="java" contentType="text/html; charset=UTF-8"
 2     pageEncoding="UTF-8"%>
 3 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
 4 <c:set var="basePath" value="${pageContext.request.contextPath }"></c:set>
 5 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 6 <html>
 7 <head>
 8 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 9 <title>Insert title here</title>
10 </head>
11 <body>
12     ${pageContext.request.contextPath }
13     <form action="${basePath }/person/welcome.action" method="post">
14         <input type="text" name="person.name">
15         <input type="number" name="person.age">
16
17         <input type="text" name="list[0]">
18         <input type="text" name="list[1]">
19         <input type="text" name="list[2]">
20
21         <input type="text" name="map['map1']">
22         <input type="text" name="map['map2']">
23
24         <input type="text" name="strings[0]">
25         <input type="text" name="strings[1]">
26
27         <input type="submit" value="提交">
28     </form>
29     <span>${dataVo.person.name }</span>
30     <span>${dataVo.person.age }</span>
31     <span>${dataVo.list[0] }</span>
32     <span>${dataVo.list[1] }</span>
33     <span>${dataVo.list[2] }</span>
34     <span>${dataVo.map["map1"] }</span>
35     <span>${dataVo.map["map2"] }</span>
36     <span>${dataVo.strings[0] }</span>
37     <span>${dataVo.strings[1] }</span>
38
39 </body>
40 </html>

    @RequestMapping("/welcome.action")public String welcome(DataVo dataVo,ModelMap modelMap){System.out.println(dataVo);modelMap.put("dataVo", dataVo);return "login";}

1 public class DataVo {
2     private Person person;
3     private List<String> list;
4     private Map<String,String> map;
5     private String[] strings;

转载于:https://www.cnblogs.com/57rongjielong/p/7820439.html

spring复杂数据类型传递相关推荐

  1. spring拦截器传递传递参数到controller+Aop切面环绕方法传递参数到目标方法

    一.前言 由于业务需要,在网上找了很久得到了这两种方式.本文代码偏少,主要讲解一下怎么传,如何接收,也记录一下,以便之后查看. 二.Spring拦截器传递参数到controller 下面是我拦截器中的 ...

  2. Spring MVC —— 前后台传递JSON

    1. 传递JSON参数 vardata = {'id':1,'name':'abc'}; $.ajax({type:'post',url:'homePageAction.do?testAJax',co ...

  3. Spring MVC 数据类型转换器

    Spring MVC默认数据类型转换器: ConversionService converters =java.lang.Boolean -> java.lang.String : org.sp ...

  4. spring异步线程传递线程上下文

    我们直接使用@Async注解,当然你也可以直接使用线程池,效果是一样的 首先我们创建ContextDecorator实现TaskDecorator接口 package com.qimo.omsa.de ...

  5. Spring异步调用传递Request对象问题分析

    一.问题描述 近期在实验室做了个动态插桩工具,在对甲方项目测试过程中,发现对含有线程池异步调用的方法进行插桩时,子线程会报空指针异常. 二.问题原因 动态插桩工具向待测软件注入的代码中包含了如下语句, ...

  6. spring mvc 如何传递集合参数(list,数组)

    spring mvc 可以自动的帮你封装参数成为对象,不用自己手动的通过request一个一个的获取参数,但是这样自动的参数封装碰碰到了集合参数可能就需要点小技巧才可以了. 一.基础类型和引用类型有什 ...

  7. Spring框架02(IOC和DI)

    目录 spring中的IOC和DI 1. BeanFactory 容器 2. ApplicationContext 容器 1)ClassPathXmlApplicationContext 2)File ...

  8. spring框架--全面详解(学习笔记)

    目录 1.Spring是什么 2.Spring 框架特点 3.Spring体系结构 4.Spring开发环境搭建 5.spring中IOC和DI 6.Spring中bean的生命周期 7.Spring ...

  9. Spring Security OAuth 2开发者指南译

    Spring Security OAuth 2开发者指南译 介绍 这是用户指南的支持OAuth 2.0.对于OAuth 1.0,一切都是不同的,所以看到它的用户指南. 本用户指南分为两部分,第一部分为 ...

最新文章

  1. 使用友盟的社会化组件,发新浪微博的 error:redirect_uri_mismatch的解决方法
  2. 使用postman模拟登录请求
  3. “RPC 好,还是 RESTful 好?” 不要选错了!
  4. Oracle分析函数三——SUM,AVG,MIN,MAX,COUNT
  5. 决定投身书海,WEB前端开发书籍推荐
  6. jsp servlet示例_Servlet和JSP中的文件上传示例
  7. guid java_JAVA实现生成GUID的方法
  8. Android 虚拟机与真机调试配置
  9. python解析html的库_python解析html开发库pyquery使用方法
  10. Python 数据结构与算法 —— 哈弗曼树
  11. 解决Mac终端exit退出不爽
  12. must be str,not int
  13. linux串口结构termios,struct termios结构体—Linux串口.doc
  14. 用jquery1.9版本判断ie浏览器及ie6浏览器
  15. mysql 跨数据库查询_MySQL中进行跨库查询的方法示例
  16. 20.5 Shell脚本中的逻辑判断;20.6 文件目录属性判断;20.7 if特殊用法;20.8 20.9 cace判断(上下)...
  17. 推特员工大规模辞职,马斯克被“问候”;腾讯10多万员工平均月薪超8万;雪欲“白嫖”网易百万玩家数据...
  18. mysql replace concat_mysql中的replace,concat,cast字符串函数
  19. 单向链表—在单向链表的头部插入一个元素
  20. Windows无法启动某个服务--错误2:系统找不到指定的文件

热门文章

  1. python随机数权重_Python实现基于权重的随机数2种方法
  2. 芯片老化验证流程_IC老化测试
  3. Linux下zip的操作命令
  4. jmeter下TPS插件的安装
  5. webstorm使用插件 statistic 统计代码
  6. Oracle转义符处理
  7. Android开发笔记(十六)秋千摇摆动画SwingAnimation
  8. Spring Boot 线程池
  9. Shiro入门视频课程——笔记(一)
  10. 在UAP中如何通过WebView控件进行C#与JS的交互