`

$.ajax请求request.getInputStream()得不到数据问题

 
阅读更多

请求中添加参数contentType

1.在不做任何修改的情况下,调用request.getParameter()可以获取到部分数据,即url拼接参数的数据。

2.在不做任何修改的情况下,如果在之前任何地方都不调用request.getParameter(),而是直接调用request.getInputStream()是可以获取到数据的。

3.原来客户端使用默认的请求头Content-Type:application/x-www-form-urlencoded,修改此值为multipart/form-data或者application/octet-stream之后,通过request.getInputStream()可以获取到数据,即使之前调用过request.getParameter(),最后的解决方法当然是客户端修改Content-Type。

 

 

 $.ajax({
	  type: "post",
	  url: "。。。。。。。。。。。。。。",
	 data: { param1: 1, param2: 2 },
	  //contentType: "application/json; charset=utf-8",//(可以)
	 //contentType: "text/xml",//(可以)
	  //contentType:"application/x-www-form-urlencoded",//(可以)
	 dataType: "json",
	  success: function (data) {
		  if (data != "") {
			
		  }
	  }
})

 

 

 最后注意 request.getParameter()、 request.getInputStream()、request.getReader()这三种方法是有冲突的,因为流只能被读一次。例如: 

1. 当form表单内容采用 enctype=application/x-www-form-urlencoded编码时,先通过调用request.getParameter() 方法得到参数后,再调用 request.getInputStream()或request.getReader()已经得不到流中的内容,因为在调用 request.getParameter()时系统可能对表单中提交的数 据以流的形式读了一次,反之亦然。 
2. 当form表单内容采用 enctype=multipart/form-data编码时,即使先调用request.getParameter()也得不到数据,但是这时调用 request.getParameter()方法对 request.getInputStream()或request.getReader()没有冲突,即使已经调用了 request.getParameter()方法也 可以通过调用request.getInputStream()或request.getReader()得 到表单中的数据,而request.getInputStream()和request.getReader()在同 一个响应中是不能混合使用的,如果混合使用就会抛异常。

 

分享到:
评论

相关推荐

    Servlet获取AJAX POST请求中参数以form data和request payload形式传输的方法

    例如,使用jQuery的`$.ajax`方法: ```javascript $.ajax({ type: 'POST', url: '/test/test.do', data: {name: 'mikan', address: 'street'}, contentType: 'application/x-www-form-urlencoded; charset=UTF-...

    ajax和java servlet交互

    1. **jQuery的Ajax方法**:jQuery提供了$.ajax()、$.get()、$.post()等便捷的Ajax方法。例如,使用$.get()发起GET请求: ```javascript $.get('servletUrl', {param1: value1, param2: value2}, function(response...

    JS组件Bootstrap Table使用方法详解

    new InputStreamReader(request.getInputStream(),"UTF-8")); StringBuilder sBuilder = new StringBuilder(""); String temp = ""; while((temp = bufr.readLine()) != null){ sBuilder.append(temp); }...

    浅谈图片上传利用request.getInputStream()获取文件流时遇到的问题

    "浅谈图片上传利用request.getInputStream()获取文件流时遇到的问题" 本文讨论了使用request.getInputStream()获取文件流时遇到的问题,并提供了两种获取文件流的方式,分别是使用DataInputStream和...

    浅谈request.getinputstream只能读取一次的问题

    在Java Web开发中,`HttpServletRequest`接口提供了一个方法`getInputStream()`,用于获取客户端发送请求时附带的数据,这些数据通常以二进制形式存在,比如上传文件或者POST请求中的非表单数据。然而,一个重要的...

    31.模拟Http请求.rar

    首先,你需要添加OkHttp依赖到项目中,然后创建OkHttpClient实例,构造Request对象,最后通过client.newCall(request).execute()执行请求。 ```java OkHttpClient client = new OkHttpClient(); Request request = ...

    jsp无刷新上传文件

    在JSP中,可以结合使用jQuery的$.ajax()或$.post()方法来实现Ajax请求。这些方法允许我们在后台发送HTTP请求,将文件数据传送到服务器,同时保持前端页面的状态不变。 首先,我们需要在HTML中创建一个用于选择文件...

    ajax传值到servlet

    - 跨域问题:Ajax请求受到同源策略限制,除非服务器配置了CORS(跨源资源共享)头。 - 错误处理:除了处理成功的响应,还需要处理可能的错误,例如网络故障、服务器错误等。 - JSONP:如果涉及到跨域请求,且服务器...

    解决ajax乱码和页面传值问题

    $.ajax({ url: "/api/data", type: "POST", contentType: "application/x-www-form-urlencoded; charset=UTF-8", data: encodedData, success: function(response) { // 处理响应 } }); ``` 3. 服务器端处理...

    spring第11章--ajax,上传下载,拦截器.rar_spring mvc_spring 下载_spring 使用ajax

    - **jQuery Ajax**:Spring MVC常与jQuery库结合使用,通过$.ajax()或$.get()、$.post()等方法发送Ajax请求。在后端,你需要创建一个处理Ajax请求的Controller方法,使用@RequestMapping注解来定义URL路径。 ```...

    jsp与JavaScript提交至servlet的几种方式

    使用XMLHttpRequest对象或者jQuery的`$.ajax()`等库函数,可以在后台异步提交数据。以下是一个简单的示例,使用原生JavaScript: ```javascript var xhr = new XMLHttpRequest(); xhr.open('POST', 'MyServlet', ...

    upload_jquery_150609_多图片上传.rar

    2. AJAX请求:使用jQuery的`$.ajax()`或`$.post()`函数发送异步请求。`FormData`对象作为`data`参数传递,并设置`contentType`为`false`,以便jQuery自动处理Content-Type。 ```javascript function uploadImages...

    Jquery跨域请求的实现

    $.ajax({ url: 'http://example.com/api', type: 'GET', xhrFields: { withCredentials: true }, crossDomain: true, success: function(response) { console.log(response); } }); ``` 这里的`...

    避免跨域问题 ajax proxy

    在Web开发中,跨域(Cross-Origin)是一个常见的问题,特别是在使用Ajax进行异步数据请求时。跨域是指浏览器的安全策略限制了JavaScript从一个源(Origin)向另一个源发送请求的能力,以防止恶意脚本窃取或篡改数据...

    完美解决request请求流只能读取一次的问题

    在后边的代码中应用到请求参数值时,我们可能会遇到request中的json数据为空的问题。这是因为InputStream只能读取一次,如果我们想要重复读取流中的数据,就需要自定义一个HttpServletRequestWrapper。 通过继承...

    ajax post 数据过长导致后台属性驱动接受不到值的处理

    这篇博客“ajax post 数据过长导致后台属性驱动接受不到值的处理”着重探讨了当POST提交的数据量过大时,如何有效处理以确保后台能够正确接收和处理这些数据。问题的核心在于HTTP协议对请求体大小的限制以及服务器端...

    Android中Https请求get和post

    POST请求常用于提交数据到服务器。在Android中实现HTTPS POST请求,基本步骤与GET类似,但需添加请求参数: 1. 添加请求头(Content-Type): ```java connection.setRequestProperty("Content-Type", "application...

    Ajax异步请求action接受json案例

    在Web开发中,Ajax(Asynchronous JavaScript and XML)是一种创建动态网页的技术,允许在不刷新整个页面的情况下与服务器交换数据并更新部分网页内容。本文将深入探讨如何利用Ajax进行异步请求,特别是针对action的...

    ajax异步文件上传,servlet处理

    用户通过`<input type="file">`选择文件后,将文件添加到`FormData`对象,然后通过XMLHttpRequest发送请求。 ### 2. 创建HTML表单 首先,我们需要一个包含文件选择控件的HTML表单: ```html ()">上传 ``` #...

    ajax提交中文乱码解决方法

    $.ajax({ type: "POST", url: "yourUrl", data: JSON.stringify(data), contentType: "application/json;charset=UTF-8", // 设置Content-Type success: function (res) { console.log(res); }, error: ...

Global site tag (gtag.js) - Google Analytics