一、(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的更多相关文章

  1. java基础之泛型对象与json互转

    1. 场景描述 把泛型对象转成字符串放到缓存中,获取后使用有点问题,记录下,有碰到的朋友,参考下. 2. 解决方案 2.1 操作类及说明 /** * @auther: 软件老王 */ public s ...

  2. Java基础-处理json字符串解析案例

    Java基础-处理json字符串解析案例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 作为一名开发人员,想必大家或多或少都有接触到XML文件,XML全称为“extensible ...

  3. Java基础学习总结(54)——JSON和Map转换的工具类

    在pom.xml文件中引入如下jar <dependency> <groupId>commons-lang</groupId> <artifactId> ...

  4. Java基础/利用fastjson反序列化json为对象和对象数组

    利用fastjson反序列化json为对象和对象数组 利用 fastjosn 将 .json文件 反序列化为 java.class 和 java.util.List fastjson 是一个性能很好的 ...

  5. JAVA基础知识之网络编程——-网络基础(Java的http get和post请求,多线程下载)

    本文主要介绍java.net下为网络编程提供的一些基础包,InetAddress代表一个IP协议对象,可以用来获取IP地址,Host name之类的信息.URL和URLConnect可以用来访问web ...

  6. 给Java新手的一些建议----Java知识点归纳(Java基础部分)

    写这篇文章的目的是想总结一下自己这么多年来使用java的一些心得体会,主要是和一些java基础知识点相关的,所以也希望能分享给刚刚入门的Java程序员和打算入Java开发这个行当的准新手们,希望可以给 ...

  7. 如何学习java?Java基础知识点分享

    面对未知的行业,人们的第一反应应该是:拒绝踏入.因为学习真的是一个痛苦的过程.想要真正了解一个行业,熟知一个行业,并熟练掌握某一技术,是真的需要时间和精力的.在学习Java基础知识期间,千锋小编疯狂为 ...

  8. 剑指Offer——知识点储备-Java基础

    剑指Offer--知识点储备-Java基础 网址来源: http://www.nowcoder.com/discuss/5949?type=0&order=0&pos=4&pa ...

  9. java基础-3

    java基础-3 API ​ Application Programming Interfaces --- 应用程序接口 Object 顶级父类 Bin --- 二进制 Oct --- 八进制 Dec ...

随机推荐

  1. atitit.为什么 java开发要比php开发速度慢??

    atitit.为什么 java开发要比php开发速度慢?? 1. 界面开发方面vs php 1 2. 架构繁琐 1 3. 环境配置复杂 1 4. 类库jar包冲突(严重) 1 5. 配置文件热部署的缺 ...

  2. Atitit.数据库新特性战略规划 mssql sql server 2008 SQL2012 SQL2014

    Atitit.数据库新特性 mssql sql server 2008 SQL2012 SQL2014 1. Sql2012 新特性 1 1.1. 增加了Sequence对象. 1 1.2. 新的分页 ...

  3. android.animation(2) - ValueAnimator的 Interpolator 和 Evaluator

    一.插值器 插值器,也叫加速器:有关插值器的知识,我在<Animation动画详解(二)——Interpolator插值器>中专门讲过,大家可以先看看这篇文章中各个加速器的效果.这里再讲一 ...

  4. 再谈API GateWay服务网关

    前面在谈微服务架构的时候,我博客上转过Chris Richardson 微服务系列中对微服务网关的描述: 通常来说,使用 API 网关是更好的解决方式.API 网关是一个服务器,也可以说是进入系统的唯 ...

  5. jQuery select添加图标

    //下拉菜单样式 /*查找全部select的下拉菜单*/ function getElemsById(cot_val){ return document.getElementById(cot_val) ...

  6. Oracle DBA面试突击题

    一份ORACLE DBA面试题 一:SQL tuning 类 1:列举几种表连接方式 答: Oracle的多表连接算法有Nest Loop.Sort Merge和Hash Join三大类,每一类又可以 ...

  7. [systemd]Linux系统启动之systemd

    参照:https://wiki.debian.org/systemd 最近在添加板子应用程序自启动的时候,发现在rcN.d中的符号链接并没有用,文件系统为Debian Jessie 8, 后来从同事那 ...

  8. asp.net曲线图

    highcharts的曲线图控件真的很强大,自己研究了下,做了一个简单的,给自己留个备忘,希望能帮到需要的朋友 Dome下载:http://files.cnblogs.com/linyijia/asp ...

  9. 从文件/文件流的头字节中得到mime信息

    在写网络爬虫的时候,需要根据链接来获取文件类型,将内容正确存储.之前我都是根据链接的后缀来判断的,比如: http://img12.360buyimg.com/da/20120330/88_31_Zy ...

  10. Spring Boot 属性配置&自定义属性配置

    在使用spring boot过程中,可以发现项目中只需要极少的配置就能完成相应的功能,这归功于spring boot中的模块化配置,在pom.xml中依赖的每个Starter都有默认配置,而这些默认配 ...