content-type 也叫MIME类型,是用来描述请求中媒体类型消息,定义于消息头中。
常见的媒体类型有如下:
text/html:html格式
text/xml:xml格式
text/plain:纯文本格式
image/gif:gif:图片格式
image/jpeg:jpg:图片格式
image/png:png:图片格式
application/xml:xml数据格式
application/json: json数据格式
application/pdf: pdf格式
application/msword: word文档格式
application/octet-stream: 二进制流数据
application/x-www-form-urlencoded:key-value形式
multipart/form-data 文件上传
以上为为常见的content-type的类型,上面几种类型中又以application/x-www-form-urlencoded,application-json,multipart/form-data三种最为常见,下面就要具体讲一下这三种类型在请求和处理的时候的区别:
(1)application/x-www-form-urlencoded
特点:键值对形式,key=value
请求时数据存在方式:
action为get时,请求参数存在于url中,参数与参数之间有?分割,形如:
https://www.baidu.com/s?rsv_sug7=100&rsv_sug2=0&rsv_sug4=10082
action为post时,请求参数存在于Form data中,参数与参数之间用&符号分割,形如:
key1=value1&key2=value2&key3=value3
接收时数据接收方式:
(1)使用@RequestParam接收
@RequestParam(value="name", required=true, defaultValue="lisi")
value: 参数名称
required:是否为必要值,默认为true,为true时如果不存在这个参数那么会报404错误
defaultValue:默认值
具体使用:
//完整写法
public String requestparam(@RequestParam(value="name", required=true, defaultValue="lisi") String name)
(2)使用@ModelAttribute,使用该注解将请求参数绑定到指定对象上
(3)最原始的方式,使用HttpServletRequest.getParameter("参数名称")
(2)multipart/form-data
该种媒体格式主要用于请求参数为二进制数据或者表单数据
特点:数据与数据之间用自定义分隔符进行分割
请求时数据存在方式:
数据存在Request payload中,数据格式类似如下:
\r\n-----------------asd\r\n
content-Disposition:form-Data;name="方法名";filename=“文件名”\r\n
content-type:image/jpeg\r\n\r\n
-----------------asd
二进制文件流
接收时数据接收方式:
(1)HttpServletRequest.getInputStream();
(2) HttpServletRequest.getReader();
(3)application/json
特点:数据以json字符串进行传递
请求时数据的存在方式:
数据存在Request payload中,数据格式为如下:
{
key1:val1,
key2:val2
}
接收时数据的接收方式:
(1) 使用注解@RequestBody解析对象
(2)HttpServletRequest.getInputStream
(3)HttpServletRequest.getReader();