Java菜鸟学习日记20
entype
-
表单的默认编码方式 application/x-www-form-urlencoded
- key1 = value1&key2 = value2...
- 只能将字符串发送到服务端
- 在服务端通过request.getParameter("key")或者request.getParameterValues("key") 获取
- 如果要列举所有发送数据的名字,可以使用:request.getParameterNamers()
- 如果此时表单中有<input type="file"> 则只能将文件名发送到服务器,文件数据不会上传
- 注意:此时请求头中的 Content-Type头的值是:application/x-www-form-urlencoded
-
上传文件的编码方式 multipart/form-data
- 请求体的格式是
---------分隔符------------用来分隔不同的part
Content-Disposition;name="key1"
value1
---------分隔符------------
Content-Disposition;name="key2"
value2
---------分隔符------------
Content-Disposition;name="file1"
Content-Type:image/jpg
sfajkl;sdfk1 faskdljfasjdf-f51文件内容
此时请求头中的Content-Type头的值是 multipart/form-data;boundery=---------
---------分隔符------------
-
如果使用multipart发送数据,则服务器无法通过 request.getParameter("key") 获取数据
- getParameter("key") 只支持urlencoded
-
multipart数据在新的Servlet版本(3及以上)中可以通过
- request.getPaths():获取multipart的所有part
- request.getPart(key):通过key获取指定的part
- part.getName():获取<input name="key值"> key值
-
part.getContentType:过去内容类型
- 普通字符串:null
- 上传文件:MimeType
- 图片:image/jpg
- 文本:text/txt
- 视频:video/mp4
- 音频:audio/mp3
- part.getSize():上传文件大小
- part.getSubmittedFileName():文件原始名称
- part.getInputStream():获取文件数据流,通常需要将其保存到服务器磁盘上
-
如果使用multipart发送数据,则服务器无法通过 request.getParameter("key") 获取数据
-
互联网应用常用编码 application/json
- 请求体:
{name: "常伟", age: 3, isMale: true}
-
JSON语法
- { }:表示对象
-
对象属性:属性名:属性值
- 多个属性中间用英文逗号隔开
- 注意:属性名一定要带 双引号
-
数组:[ 值1,值2,{ 属性 }.....]
- 值既可以是基本类型,也可以是对象
-
JSON支持基本类型
- 字符串:"adfas"
- 数字:123 3.14
- 布尔值:true,false
- 空:null
- 发送JSON请求时,请求头中Content-Type头的值是:application/json或者text/json
- 使用Servlet接受JSON请求
-
JSON语法
-
从请求体的inputStream中获取JSON字符串
- ServletinputStream input = request.getInputStream();
- 把input输入流读成字符串:IOUtils.toString(input,"utf-8");
-
把JSON字符串转换成Java对象
- 使用阿里提供的FastJSON Jar包
- JSON.parseObjext(str,Class);
- 传统企业级服务编码 application/xml
图片上传
上传首页
上传图片Servlet
XML配置