request.getParameter()获取不到数据的问题
来源:互联网 发布:eclipse更改端口号 编辑:程序博客网 时间:2024/05/17 00:18
最近做项目时,发现手机客户端通过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()获取不到数据的问题
- request.getParameter()获取不到数据的问题
- request.getParameter()获取不到数据的问题
- request.getParameter()获取不到数据的问题
- request.getParameter()获取不到数据的问题
- request.getParameter 获取不到页面的参数的问题
- jsp的request.getParameter获取不到表单参数
- 解决当FORM的ENCTYPE="multipart/form-data" 时request.getParameter()获取不到值的问题
- 【错误记录】HttpServletRequest.getParameter获取不到数据
- 复杂的json提交给Struts2普通的request.getParameter()是获取不到的
- 当FORM的ENCTYPE="multipart/form-data" 时request.getParameter()获取不到
- FORM的ENCTYPE="multipart/form-data" request.getParameter()获取不到值
- ajax post 后台request.getParameter获取不到参数
- request.getParameter("")的乱码问题
- 关于struts1.x中Action使用request.getParameter(param)取不到url的参数问题
- ajax的post请求后台request.getParameter()接收不到参数问题
- servletFileUpload.parseRequest(request)解析为空获取不到数据问题
- request.getparameter() 获取中文出现乱码 问题
- 学习笔记之线程间通信
- Linux 接口并发压力测试
- 在 Linux 下安装 JDK 并配置环境变量的方法
- Shiro之CAS单点登录-yellowcong
- 《剑指offer》刷题笔记(字符串):字符流中第一个不重复的字符
- request.getParameter()获取不到数据的问题
- 使用secureCRT发布版本
- Struts2+Spring+Hibernate整合示例
- Count and Say-LeetCode JavaScript
- golang中发送http请求的几种常见情况
- 2017.12.21 异常处理和Response(@ControllerAdvice)
- 多样式倒计时开源控件
- spring自定义标签
- CentOS 7 安装MySql