request.getParameter()获取不到数据的问题
最近做项目时,发现手机客户端通过http协议post方式上传数据到服务端,在服务器端通过request.getInputStream()能获取到相应的数据,但用request.getParameter()却获取不到数据。这是怎么回事呢,后来发现这种情况跟form表单的属性 enctype有关系。
HTML中的form表单有一个关键属性 enctype=application/x-www-form-urlencoded 或multipart/form-data。
?
1、enctype="application/x-www-form-urlencoded"是默认的编码方式,当以这种方式提交数据时,HTTP报文中的内容是:
Html代码
POST?/post_test.php?HTTP/1.1? Accept-Language:?zh-CN User-Agent:?Mozilla/4.0? Content-Type:?application/x-www-form-urlencoded? Host:?192.168.12.102 Content-Length:?42 Connection:?Keep-Alive Cache-Control:?no-cache ? title=test&content=%B3%AC%BC%B6%C5%AE%C9%FA&submit=post+article?
Servlet的API提供了对这种编码方式解码的支持,只需要调用ServletRequest 类中的getParameter()方法就可以得到表单中提交的数据。
2、在传输大数据量的二进制数据时,必须将编码方式设置成enctype="multipart/form-data",当以这种方式提交数据时,HTTP报文中的内容是:
?
Html代码
POST?/post_test.php?t=1?HTTP/1.1 Accept-Language:?zh-CN User-Agent:?Mozilla/4.0 Content-Type:?multipart/form-data;?boundary=---------------------------7dbf514701e8 Accept-Encoding:?gzip,?deflate Host:?192.168.12.102 Content-Length:?345 Connection:?Keep-Alive Cache-Control:?no-cache ? -----------------------------7dbf514701e8 Content-Disposition:?form-data;?name="title" test -----------------------------7dbf514701e8 Content-Disposition:?form-data;?name="content" .... -----------------------------7dbf514701e8 Content-Disposition:?form-data;?name="submit" post?article -----------------------------7dbf514701e8--
如果以这种方式提交数据就要用request.getInputStream()或request.getReader()来获取提交的数据?,用 request.getParameter()是获取不到提交的数据的。
?
?
最后注意request.getParameter()、request.getInputStream()、request.getReader()这三种方法是有冲突的,因为流只能被读一次。
比如:?
当form表单内容采用enctype=application/x-www-form-urlencoded编码时,先通过调用request.getParameter()方法获取数据后,再调用request.getInputStream()或request.getReader()已经获取不到流中的内容了,因为在调用 request.getParameter()时系统可能对表单中提交的数据以流的形式读了一次,反之亦然。
?
当form表单内容采用enctype=multipart/form-data编码时,调用request.getParameter()获取不到数据,即使已经调用了request.getParameter()方法也可以再通过调用request.getInputStream()或request.getReader()获取表单中的数据,但request.getInputStream()和request.getReader()在同一个响应中是不能混合使用的,如果混合使用会抛异常的。
request.getParameter()获取不到数据的问题相关推荐
- 当FORM的ENCTYPE=quot;multipart/form-dataquot; 时request.getParameter()获取不到
当FORM的ENCTYPE="multipart/form-data" 时request.getParameter()获取不到值. 解决方法: 提交普通表单时,在提交前: $(&q ...
- postman发送post请求,用request.getParameter()获取请求参数
1.接口代码 @RequestMapping("notifyUrl") public void notifyUrl(HttpServletRequest request, Ht ...
- setCharacterEncoding 是在request.getParameter获取参数之前 设置request的编码格式 一步到位...
setCharacterEncoding 是在request.getParameter获取参数之前 设置request的编码格式 一步到位 转载于:https://www.cnblogs.com/cl ...
- springmvc从request中获取body的数据的方法
从request中获取只需要3步骤即可,其中会用到dubbo的IOUtils,需要引入maven <dependency><groupId>com.alibaba</gr ...
- vue fromData提交表单(文件)的同时 axios通过将token封装一起发送,Springboot后端拦截器通过request.getParameter获取,Redis验证token
一.前端: 1.在封装好的axios接口: import axios from 'axios'axios.defaults.withCredentials = true;// 允许跨域携带cookie ...
- 微信小程序wx.request POST获取不到数据解决办法
get //发起请求 wx.request({ url: 'http://www.xiaochengxu.com/home/index/curd', //仅为示例,并非真实的接口地 ...
- request无法获取到前端发送的form表单数据
文章目录 问题:servlet中使用request.getParameter()获取不到前端发送的form表单中的文本数据 解决方案 问题:servlet中使用request.getParameter ...
- Request —— 获取请求行数据 获取请求头数据 获取请求体数据
1. request对象和response对象的原理 1. request和response对象是由服务器创建的.我们来使用它们 2. request对象是来获取请求消息,respon ...
- request.getParameter和request.getAttribute之间的区别
HttpServletRequest类既有getAttribute()方法,也由getParameter()方法,这两个方法有以下区别: (1)HttpServletRequest类有setAttri ...
最新文章
- BZOJ 1968 [Ahoi2005]COMMON 约数研究
- Linux 下禅道和 SVN、GIT 集成插件发布
- Myeclipse10.7安装git插件并将Java项目上传到码云(github)
- 用Flask开发Web版日历应用
- 外呼机器人起名_电销外呼机器人如此受欢迎,今天终于知道原因了
- 利用Python进行数据分析笔记-时间序列(时区、周期、频率)
- Handler机制原理图、源码、使用!!!!!
- python求和1到100_python实现1加到100
- IReport问题的整理
- 谷歌浏览器部分iframe页面无法打开,跨域问题
- 1960-征战的Loy
- python常用的颜色英文表达_python 中颜色的表示
- Kafka安装与简介
- Tomcat8.0系列配置GlobalSign SSL证书
- 淘宝/天猫获得淘宝店铺详情 API接口及 返回值说明
- 《Long Short-Term Memory》翻译,Sepp Hochreiter, ¨urgen Schmidhuber.1997,9(8):1735-1780
- 【资料合集】2018云栖大会上半年深圳、南京、武汉、上海峰会全记录
- CentOS7目录结构详细版
- 【财务学习笔记】ROE和ROI的比较
- 波形包络提取与峰值提取_干涉信号中的小波峰峰值提取方法与流程
热门文章
- 20155210潘滢昊 2016-2017-2《Java程序设计》第一周学习总结
- XML和SQL的互相操作
- DSPE-PEG-FA、二硬脂酰基磷脂酰乙醇胺-聚乙二醇-叶酸、磷脂-聚乙二醇-叶酸
- Matlab保存图片背景为透明
- Spring Bean配置细节author: 惠惠
- python绕过验证码登录_python接口自动化(十三)--cookie绕过验证码登录(详解)...
- 考研复试6 编译原理
- 游龙传说服务器维护,游龙传说日常玩法有哪些 日常玩法说明
- 知名传统企业如何制定面向80后的互联网战略(软件世界09年10月专栏)
- 找到当月的休息日(Java)