request.getParameter() 、 request.getInputStream()和request.getReader() 使用体会

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.getParameter()方法也可以通过调用request.getInputStream()或request.getReader()得 到表单中的数据,而request.getInputStream()和request.getReader()在同一个响应中是不能混合使用的,如果混合使用就会抛异常。

时间: 2024-12-25 04:34:00

request.getParameter() 、 request.getInputStream()和request.getReader() 使用体会的相关文章

request.getparameter和 request.getattribute的差别

request.getAttribute():是request时设置的变量的值,用request.setAttribute("name","您自己的值");来设置值, request.getParameter():提取发送过来的參数如:本网页 request.getParameter 是用来接受来自get方法或post方法的參数 <form method=post> <form method=get> <a href="1.j

request.getparameter和 request.getattribute的区别

request.getAttribute():是request时设置的变量的值,用request.setAttribute("name","您自己的值");来设置值, request.getParameter():提取发送过来的参数如:本网页 request.getParameter 是用来接受来自get方法或post方法的参数 <form method=post> <form method=get> <a href="1.j

ajax post 请求 ,java端使用 request.getParameter 获取不到数据问题

js端 $.ajax({ type:'POST', data:{a:1}, url:_this.apiUrl+url, dataType:'json',//使用jsonp方式请求 contentType:"application/json; charset=utf-8", json:"callback",//jsonp名 success:function(re){ }}); @PostMapping(value = "/queryProduct"

SpringMVC项目中中文字符乱码问题及解决办法总结(非专业最优解决办法) -- ajax传值乱码; request.getParameter()乱码;

情况一: ajax中传值时是乱码(后台可以获取到中文字符,但用@ResponseBody返回时前台为乱码) 情况二: Controller 中 request.getParameter()获取到的是乱码 @RequestMapping(params = "method=submit") public String submit(HttpServletRequest request, ModelMap modelMap) throws Exception{ String uname =

访问请求参数request.getParameter()

访问请求参数request.getParameter() 制作人:全心全意 getParameter() 例: 传递参数页: <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <%@ page import="java.util.Date"%> <%@ page import

request getParameter(),getInputStream()

我们经常用servlet和jsp, 经常用request.getParameter() 来得到数据. request.getParameter()  request.getInputStream()  request.getReader() 这三个方法都是从request对象中得到提交的数据,但是用途不同. 要根据<form>表单提交数据的编码方式选择不同的方法. HTML中的form表单的一个关键属性 enctype: 1. enctype=application/x- www-form-u

复杂的json提交给Struts2普通的request.getParameter()是获取不到的

今天在编码的时候遇到遇到一个奇特的问题,在前端客户段提交json数据到Struts2时,在通过request.getParameter()对相应的json数据进行获取竟然是null 前台jquery如下: $.post("test.do", {"reportId":"2c90f1884cc110e6014cc117de000002","fileFormat":"Docx","reName"

request.getParameter()不能获得值

在调试汇付接口的过程中,接收返回的参数用request.getParameter()获取参数的时候,获得的值为null. 搜索资料说这种情况跟form表单的属性 enctype有关系.当form表单内容采用enctype=multipart/form-data编码时, 调用request.getParameter()获取不到数据.可以通过request.getInputStream()获得数据,并把 “UsrCustId=6000060003271506, BgRetUrl=http%3A%2F

request.getParameterValues与request.getParameter的区别

一. 简单的对比 request.getParameter用的比较多,相对熟悉 request.getParameterValues(String   name)是获得如checkbox类(名字相同,但值有多个)的数据.   接收数组变量 ,如checkobx类型     request.getParameter(String   name)是获得相应名的数据,如果有重复的名,则返回第一个的值 . 接收一般变量 ,如text类型 例: 1. 三个名字相同的text标签 <input type=&qu