JAVA基础之multipart,urlencoded以及JSON
一、(enctype)
表单的默认编码方式 ajpplication/x-www-form-urlencoded
上传文件的编码方式 multipart/form-data
互联网应用常用编码 application/json
传统企业级服务编码 application/xml
二、urlencoded
Key1= value1&key2=value2&abc=123.....
只能将字符串发送服务端
三、在服务端通过request.getParameter(“key”) request.getParameterValues(“key”)获取
如果要列举所有发送的数据名字,可以使用request.getParameterNames()
如果此时表单中有<input type =”file”>
则只能将文件名发送到服务端,文件数据不会上传!
注意:此时请求头中的Content-Type头的值是application/x-www-form-urllencoded
四、Multipart
请求体的格式是:
---------分隔符---------------- 用来分割不同的part
Content-Disposition; name= “key”
Value
----------分隔符---------------
Content-Disposition; name=”key2”
Value2
----------分隔符--------------
Content-Disposition; name = “file1”
Content-Type:image/jpg
此时,请求头中的Content-Type头的值是
multipart/form-data; boundery=-------------------------------------------------------
如果使用multipart发送数据,则服务无法通过request.getParameter()获取数据
getParameter()只支持urlencoded格式
Multipart 数据在新的Servlet版本(3及以上)中可以通过
request.getParts() 获取multipart的所有part
request.getPart(key) 通过key获取指定的part
part.getName() 获取<input name=”key值”> key值
part.getContentType() 获取内容类型,如果普通字符串则为null,如果是上传文件,则MimeType 图片image/jpg
image/png 文本 Text/txt
视频 video/mp4 音频 audio/mp3
通过Content-type可以判断上传的是什么类型的文件
part.getSize() 上传文件的大小
part.getSubmittedFileName() 文件的原始名称
part.getInputStream() 获取文件的数据流,通常需要将其保存到服务器的磁盘上
上传文件时, web.xml里面的multipart配置的含义
五、JSON
请求体:
{“name”:”杨先生”,”age”,:3,”isMale”:true}
JSON语法
{ } 表示对象
对象的属性用 “属性名”:
属性值 表示
多个属性中间用英文 , 分隔,注意:属性名一定要带双引号” ”
[ 值1,值2 ,{属性},.........] 表示数组
值即可以使基本类型,也可以是对象
JSON支持基本类型
字符串 “abcd”
数字 123 3.14
布尔值 true,false
空 null
发送JSON请求时,请求头中Content-Type头的值是application/json 或者text/json
使用Servlet接受JSON请求步骤
第一步是从请求体的inputStream中获取JSON字符串
ServletInputStream inputStream = request.getInputStream();
把input输入流读成字符串 IOUtils.toString(input,”utf-8”);
第二步把JSON字符串转换为Java对象
使用 阿里提供的FaskJSON Jar包
JSON.parseObject(str,Class);
实例
JAVA基础之multipart,urlencoded以及JSON的更多相关文章
- java基础之泛型对象与json互转
1. 场景描述 把泛型对象转成字符串放到缓存中,获取后使用有点问题,记录下,有碰到的朋友,参考下. 2. 解决方案 2.1 操作类及说明 /** * @auther: 软件老王 */ public s ...
- Java基础-处理json字符串解析案例
Java基础-处理json字符串解析案例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 作为一名开发人员,想必大家或多或少都有接触到XML文件,XML全称为“extensible ...
- Java基础学习总结(54)——JSON和Map转换的工具类
在pom.xml文件中引入如下jar <dependency> <groupId>commons-lang</groupId> <artifactId> ...
- Java基础/利用fastjson反序列化json为对象和对象数组
利用fastjson反序列化json为对象和对象数组 利用 fastjosn 将 .json文件 反序列化为 java.class 和 java.util.List fastjson 是一个性能很好的 ...
- JAVA基础知识之网络编程——-网络基础(Java的http get和post请求,多线程下载)
本文主要介绍java.net下为网络编程提供的一些基础包,InetAddress代表一个IP协议对象,可以用来获取IP地址,Host name之类的信息.URL和URLConnect可以用来访问web ...
- 给Java新手的一些建议----Java知识点归纳(Java基础部分)
写这篇文章的目的是想总结一下自己这么多年来使用java的一些心得体会,主要是和一些java基础知识点相关的,所以也希望能分享给刚刚入门的Java程序员和打算入Java开发这个行当的准新手们,希望可以给 ...
- 如何学习java?Java基础知识点分享
面对未知的行业,人们的第一反应应该是:拒绝踏入.因为学习真的是一个痛苦的过程.想要真正了解一个行业,熟知一个行业,并熟练掌握某一技术,是真的需要时间和精力的.在学习Java基础知识期间,千锋小编疯狂为 ...
- 剑指Offer——知识点储备-Java基础
剑指Offer--知识点储备-Java基础 网址来源: http://www.nowcoder.com/discuss/5949?type=0&order=0&pos=4&pa ...
- java基础-3
java基础-3 API Application Programming Interfaces --- 应用程序接口 Object 顶级父类 Bin --- 二进制 Oct --- 八进制 Dec ...
随机推荐
- eclipse下修改默认编码
window-preferences-右侧选项卡-General-Workspace-Text file encoding
- atitit.seo 发帖关键词以及链接的制作.doc
atitit.seo 发帖关键词以及链接的制作.doc 1. 关键词的获得(by cate) 1 1.1. 删除统计数量 Cartier(144) 格式 1 1.2. \(\d*\) 替换 ...
- windows gvim插入当前时间
:nnoremap <F5> "=strftime("%c")<CR>P :inoremap <F5> <C-R>=str ...
- 高性能网络 | 你所不知道的TIME_WAIT和CLOSE_WAIT
你遇到过TIME_WAIT的问题吗? 我相信很多都遇到过这个问题.一旦有用户在喊:网络变慢了.第一件事情就是,netstat -a | grep TIME_WAIT | wc -l 一下.哎呀妈呀 ...
- iOS_5_汤姆猫
终于效果图: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcHJlX2VtaW5lbnQ=/font/5a6L5L2T/fontsize/400/fill ...
- Hive使用过程中的坑
在Hive脚本中如果有 use db; #即使用数据库 最后一定要有一个exit;脚本,退出hive窗口 否则运行到最后,hive无法启动MR任务,只是卡在打印完成hive脚本处. 例子如下: $Hi ...
- Scrum培训心得体会
# Scrum培训心得体会 非常荣幸能够参加公司组织的这场为期两天的培训,赛宝的老师讲的非常好.通过这次学习,理解了当前最流行的Scrum开发框架,下面总结了我对Scrum的理解. ## scrum的 ...
- 关于Netfilter NF_HOOK宏的outdev參数bug
1.首先指出.NF_HOOK系列宏的outdev參数的传递方式(直接传递一个net_device结构体指针)是不对的 正确的方式要么是不传递.要么是传递指针的地址,即地址的地址. 2.接下来指出,仅仅 ...
- Unix系统编程()发送信号kill
与shell的kill命令类似,一个进程能够使用kill系统调用向另一进程发送信号. 之所以选择kill作为术语,因为早期UNIX实现中大多数信号的默认行为是终止进程. #include <si ...
- PHP——小尾巴之流程处理
说明:首先新建一个流程,把处理流程的节点人员添加进去,最后点确定提交至数据库 处理流程:不同用户登录进去处理自己的节点部分对其审核通过 新建两个流程: 第一个为借款流程:处理顺序为:李四发起=> ...