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 ...
随机推荐
- Spring Cloud概述
Spring Cloud简介 Spring Cloud是一个基于Spring Boot实现的云应用开发工具,它为基于JVM的云应用开发中的配置管理.服务发现.断路器.智能路由.微代理.控制总线.全局锁 ...
- OpenCV2马拉松第24圈——轮廓提取
计算机视觉讨论群162501053 转载请注明:http://blog.csdn.net/abcd1992719g/article/details/27979267 收入囊中 在图片中找到轮廓而且描绘 ...
- Linux安装Scala步骤
1.到官方下载tgz的安装包. http://www.scala-lang.org/download/ 注意:在最下面的Other Resources中 2.下载后将压缩包放在/usr/local目录 ...
- ctags简明用法
1.安装: sudo apt install ctags 2.生成tags文件: //进入目标目录 ctags -R . 3.在vim中设置tags的绝对目录,这样就可以在任何子目录使用了. :set ...
- atitit.提升兼容性最佳实践 o9o
atitit.提升兼容性最佳实践 o9o.doc 1. Atitit.兼容性的"一加三"策略 1 2. 扩展表模式 1 3. 同时运行模式 1 3.1. 完美的后向兼容性 2 3. ...
- css 优先级的bug
对于前端而言,了解css样式的优先级,对开发或处理bug有着事半功倍的效果,今天在做项目的时候,突然碰到一个优先级的小问题,刚开始不知道所因,后来才发现这个问题是由优先级造成的.先描述下问题,鼠标悬停 ...
- C++函数默认参数(转)
在代码中使用到了函数的默认参数,在函数的定义和实现中都填写的默认参数,结果出现了错误: 代码: #ifndef FIRSTPAGE_H #define FIRSTPAGE_H #include < ...
- Makefile学习之路5——通过函数增强功能
通过函数能显著增强Makefile的功能.对于simple项目的Makefile,尽管使用了模式规则,但还是有一件比较麻烦的事情,就是要在Makefile中指明每一个项目源文件.下面介绍几个后期会使用 ...
- Linux下protobuf的编译与安装
1.下载源码 首先,从github上下载protobuf的源码,地址:https://github.com/google/protobuf,我选择下载2.5.0版本. 2.编译protobuf 将下载 ...
- C++中变量做数组长度
在Java中,这是完全可以的,比如我们运行如下程序: package cn.darrenchan.storm; import java.util.Arrays; public class Test { ...