常用HTTP contentType与后端处理方式

1、Content-Type:application/x-www-form-urlencoded; charset=UTF-8

前端export.json的请求
后端export.json的处理方式

对应的后端的处理方式,如果是单个参数去获取,那就用@RequestParam,如果是对应Java Bean,那就不需要任何注解

2、Content-Type:application/json;charset=UTF-8

前端list.json请求

对应的后端处理方式,设置@RequestBody

后端list的处理

3、Content-Type:multipart/form-data;

前端上传
后端处理

2018-1-29下班总结:

用get方式发送参数,拼接在url后:
image.png

后端处理:

HttpServletRequest对象
从request中可以获取,用@Requestparam也可以获取
如果是Post请求:

1、前端传递的方式为:Body+application/x-www-form-urlencoded:

image.png
后端post+@RequestBody的方式来做获取,@RequestBody注解的字段获取的为key=value格式的数据,user对象也绑定了属性值,所以urlencoded的方式不需要后端特殊处理,springMVC会进行绑定

2、如果前端改成以json字符串的形式传递参数:

后端接收到json字符串,用阿里fastjson解析:

后端接收的值

3、接着上一步的后端代码,如果前端改成form-data 的方式传递,则报错:

image.png

将后端的代码改一下:

加了@RequestParam、不加注解的字段、不加注解的User对象都绑定了参数值

2、2如果前端是body+x-www-form-urlencoded方式传参,后端在解析字符串时报错:

接收到的字符串为 json: id=tery007

到这里,我们小小总结一下:
如果是POST+form-data的方式:
不需要做任何处理,直接用对象接收即可(不管有多少个对象):

image.png

如果是POST+x-www.form-urlencoded的方式,可以加@RequestParam注解来获取(如果不传,则报错:

image.png

),也可以不加@RequestParam来获取,获取不到值的时候不报错。

如果是POSt+json格式传递(浏览器为Request Payload,postman为raw格式)的方式:

image.png

后端需要用@RequestBody注解标识字段,@RequestBody的作用是接收Http请求中参数,调用HttpMessageConverter接口转化为json或xml数据并绑定到对象上。同理,@ResponseBody也是调用HttpMessageConverter接口将数据转换成json或xml格式的数据,返回给前端。

默认赋值给加了@RequestBody的字段,接收到的是一个json数据

最终的结论:
json格式的数据用@RequestBody注解让HttpMessageConverter转换成json数据绑定到对象上;
urlencoded或者form-data一般都用@RequestParam注解来标注(算是个规范吧,不加也可以),当是自己封装的实体对象时,什么都不用加。

常用HTTP contentType与后端处理方式的更多相关文章

  1. .net 常用Response.ContentType

    来源:http://blog.csdn.net/navy235/article/details/5982319 不同的ContentType 会影响客户端所看到的效果.默认的ContentType为 ...

  2. python前后端加密方式

    后端加密方法: python后端加密方式: # 双重工加密 #bytes((7788).encode('utf-8')):为后端加密二把手,多加的锁,该参数可为空,必须加bytes才能实现 md5pa ...

  3. 【转】浅谈常用的几种web攻击方式

    浅谈常用的几种web攻击方式 一.Dos攻击(Denial of Service attack) 是一种针对服务器的能够让服务器呈现静止状态的攻击方式.有时候也加服务停止攻击或拒绝服务攻击.其原理就是 ...

  4. C# ContentType: "application/json" 请求方式传json参数问题

    处理Http请求时遇到的ContentType为application/json方式,记录下这种Post请求方式下如何传json参数: var request = (HttpWebRequest)We ...

  5. Spring MVC 前后端 Json 方式交互和处理

    众所周知,在mvc中,数据是在各个层次之间进行流转是一个不争的事实. 而这种流转,也就会面临一些困境,这些困境,是由于数据在不同世界中的表现形式不同而造成的.   数据在页面上是一个扁平的,不带数据类 ...

  6. 23----2013.07.01---Div和Span区别,Css常用属性,选择器,使用css的方式,脱离文档流,div+css布局,盒子模型,框架,js基本介绍

    01 复习内容 复习之前的知识点 02演示VS创建元素 03div和span区别 通过display属性进行DIV与Span之间的转换.div->span 设置display:inline   ...

  7. openstack学习心得:glance 架构、概念、后端存储配置方式

    glance 架构 glance 服务概述 Image 服务 使得用户可以发现.注册.检索虚拟机镜像.它对外提供REST API使得你能够查询虚拟机镜像元数据和检索一个真实的镜像.你可以通过镜像服务将 ...

  8. 前台返回json数据的常用方式+常用的AJAX请求后台数据方式

    我个人开发常用的如下所示: 之所以像下面这样下,一是前台Ajax,二是为安卓提供接口数据 现在常用的是返回JSON数据,XML的时代一去不复返 JSON相对于XML要轻量级的多 对JSON不是十分熟悉 ...

  9. ASP.NET 常用状态(信息)保存方式

    服务器端:Session(会话)/ Application/ Caching(缓存)/DataBase(数据库) Session: Session: 常用于保存登录用户ID.验证码 不同的浏览器不能共 ...

随机推荐

  1. 利用javascript实现css操作

    在很多情况下,都需要对网页上元素的样式进行动态的修改.在JavaScript中提供几种方式动态的修改样式,下面将介绍方法的使用.效果.以及缺陷. 1.使用obj.className来修改样式表的类名. ...

  2. [转] Matlab编程规范(MATLAB Programming Style Guidelines)

    转自: Jerry Zitao Liu的博客 主要是参考了下面这篇文章,简洁总结在这里. MATLAB Programming Style Guidelines 简洁总结如下: 表示object的数量 ...

  3. byte、二进制、十进制数值之间的转换

    项目中遇到将字节数据文件解析成可展示的十进制,经过调查和测试得出下面的转换方法 1.将byte值转换为二进制字符串: byte byteValue = -1; // 将byte转换为8位二进制字符串 ...

  4. linux常用命令:sudo 命令

    sudo命令用来以其他身份来执行命令,预设的身份为root. 1.命令格式: sudo  [参数]  [命令] 2.命令功能: 功能:  sudo可以针对单个命令授予临时权限.用户也可以通过su切换到 ...

  5. Linux基础命令---chown

    chown 改变文件或者目录的所有者,或者所属的群组.如果只给出一个所有者(用户名或数字用户ID),则该用户将成为每个给定文件的所有者,并且文件的组不会被更改.如果所有者后面跟着冒号和组名(或数字组I ...

  6. P3538 [POI2012]OKR-A Horrible Poem

    P3538 [POI2012]OKR-A Horrible Poem hash+线性筛 题解 <----这篇写的不错(其实是我懒得码字了qwq) UVA10298 Power Strings 的 ...

  7. kubernetes extension point

    以下大部分来自于k8s document, 笔者只是总结归纳, 解释不足的地方请参阅相关文档 Intention Non-sustainable way to customize Kubernetes ...

  8. HTML标签(持续更新)

    HTML的文档结构: 1.<html> 2.<head>:放置HTML文件的信息,如定义CSS样式代码可放置在此标签中 3.<title>:放置网页的标题 4.&l ...

  9. hdu 3415 Max Sum of Max-K-sub-sequence 单调队列优化DP

    题目链接: https://www.cnblogs.com/Draymonder/p/9536681.html 同上一篇文章,只是 需要记录最大值的开始和结束的位置 #include <iost ...

  10. eclipse 在线安装反编译插件

    打开eclipse help>install New Software…..>add Name:jd-eclipse_update_site Location:http://jd.beno ...