SpringMVC学习笔记:表单提交 参数的接收
SpringMVC可以接收原生form表单和json格式数据
有一个名为Book的model,其中的属性如下:
字符串类型的name,数字类型的price,数组类型的cover,集合类型的authors,其中集合类型中的元素又是一个Author对象,那么前端需要发送什么样的数据才能完整的封装成一个Book对象呢
如果对SpringMVC的不太熟悉可以看看我的这篇博客https://www.cnblogs.com/colin220/p/9508815.html
首先是form表单数据(编码方式为application/x-www-form-urlencoded)
先看看controller代码
@Controller
public class BookController { @PostMapping("/book/save")
public ResponseEntity<?> save(Book book){
System.out.println(book.toString());
return ResponseEntity.ok("receive");
}
}
controller代码很简单,接受参数就是刚才的Book对象
用postman模拟表单发送数据,原生form表单只能发送key-value格式的数据
如上图所示,如果是数组,需要key值为数组的变量名,value为数组的单个值,其实如果是数组也可以写成 cover: one, two, three 这样的形式,springMVC可以解析成数组;如果是集合,首先在变量名后加上索引值,然后加上此元素的属性名,和后端的对象属性名一一对应好
form表单还可以上传图片 文档 视频等格式,一般使用ajax异步上传到图片服务器,然后返回图片在图片服务器上的url,并提交图片的url
Json格式数据提交
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。JSON可由两种结构构建:键值对的集合(a collection of name/value pairs)和有序的值的集合(an ordered list of values)
用Json可以传递很复杂的数据,仍然以上面的Book对象为例,需要传递哪些形式的数据呢
先看看controller方法
@Controller
public class BookController { @PostMapping("/book/keep")
public ResponseEntity<?> keep(@RequestBody Book book) {
System.out.println(book);
return ResponseEntity.ok("done");
}
}
参数为Book对象,加了@ReqeustBody就可以接受Json格式的数据
用postman发送json数据
如上图所示,json格式的数据可读性很好,后端也能完全接受到数据
以上就是两种数据接收的方式
SpringMVC学习笔记:表单提交 参数的接收的更多相关文章
- 第6章—渲染web视图—SpringMVC+Thymeleaf 处理表单提交
SpringMVC+Thymeleaf 处理表单提交 thymleaf处理表单提交的方式和jsp有些类似,也有点不同之处,这里操作一个小Demo,并说明: 1.demo的结构图如下所示: pom.xm ...
- 输入值/表单提交参数过滤有效防止sql注入的方法
输入值/表单提交参数过滤,防止sql注入或非法攻击的方法: 代码如下: /** * 过滤sql与php文件操作的关键字 * @param string $string * @return strin ...
- JavaWeb学习日记----表单提交方式
1.表单提交方式 (1) 使用input控件中的submit提交 代码如下: <!DOCTYPE html> <html lang="en"> <he ...
- php学习笔记——表单
13.表单 1)GET vs. POST GET 和 POST 都创建数组(例如,array( key => value, key2 => value2, key3 => value ...
- nodejs学习之表单提交(1)
nodejs作为一门后端语言,接触的最多的是它的框架,但是它本身的api我觉得更是非学不可,所有才有了这篇文章 表单提交是最基本的也是最实用的入门实例 HTML: <!DOCTYPE html& ...
- [html5] 学习笔记-表单新增元素与属性
本节讲的是表单元素的form,formaction属性,frommethod,formenctype属性,formtarget,autofocus属性,required,labels属性. 1.for ...
- HTML5 学习笔记 表单属性
HTML5新的表单属性 HTML5 的form和input 标签添加了几个新的属性 <form>新属性 autocomplete novalidate input 新属性 autocomp ...
- AngularJs学习笔记-表单处理
表单处理 (1)Angular表单API 1.模板式表单,需引入FormsModule 2.响应式表单,需引入ReactiveFormsModule (2)模板式表单 在Angular中使用for ...
- Android实现表单提交,webapi接收
1.服务端采用的是.net的WEBAPI接口. 2.android多文件上传. 以下为核心代码: package com.example.my.androidupload; import androi ...
随机推荐
- vue-router导航守卫,限制页面访问权限
在项目开发过程中,经常会需要登录.注册.忘记密码等,也有很多页面是需要登录后才能访问,有些页面是无需登录就可以访问的,那么vue是怎么来限制这些访问权限问题的呢? vue-router导航守卫的bef ...
- 199. Binary Tree Right Side View (Tree, Stack)
Given a binary tree, imagine yourself standing on the right side of it, return the values of the nod ...
- Shell教程 之数组
1.定义数组 数组中可以存放多个值.Bash Shell 只支持一维数组(不支持多维数组),初始化时不需要定义数组大小(与 PHP 类似). 与大部分编程语言类似,数组元素的下标由0开始. Shell ...
- oracle中的to_number在mysql中的转换
select cast(11 as unsigned int) /*整型*/ select cast(11 as decimal(10,2)) /*浮点型*/ 注:(10,2)代表数字共十位,小数点后 ...
- ECMAScript2017之async function
An async function can contain an await expression that pauses the execution of the async function an ...
- 微信小程序开发——前端如何区分小程序运行环境
前言: 之前用vue做h5项目,对于接口请求,都是根据前端访问域名来判断运行环境,然后自动适配对应的服务器地址的.这样的好处就是在开发.测试及发布上线全程都不需要手动去改接口请求地址,只要提前配置好就 ...
- 微信小程序接入百度统计
一. 百度统计添加应用,获取appkey和微信小程序统计sdk: 1. 百度统计首页,点击“我的全部应用”右侧的添加按钮: 2. “应用类型”选择小程序统计,选择微信小程序,填写应用名称信息,选择内容 ...
- 20 【python】入门指南:常用数据结构
Python内置了三种高级数据结构:list,tuple,dict list:数组,相同类型的元素组成的数组 tuple:元组,相同类型的元素组成的数组,但是这里有限定条件(长度是固定的,并且值也是固 ...
- iOS 开发实用工具
史蒂芬的博客 (各种软件) http://www.sdifen.com/ 产品原型设计工具 -- 1.墨刀 2.Axure RP 检测接口工具 ---- 1.Charles 2. postman607 ...
- 20165315 预备作业3 Linux安装及学习
20165315 预备作业3 Linux安装及学习 一.在自己笔记本上安装Linux操作系统 因为对操作电脑的不熟悉,我在第一项任务上就花费了一定的时间,在安装过程有如下问题: 我的电脑是苹果公司的M ...