请求中添加参数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 3.0及以上版本支持直接处理多部分表单数据,这使得文件上传变得简单。我们需要创建一个Servlet,处理`POST`请求,并解析`multipart/form-data`类型的请求数据。关键在于使用`HttpServletRequest`的`getPart...
在Ajax请求的回调函数中,通过jQuery对返回的JSON数据进行处理,然后将结果显示在页面的`<div>`元素中。这样的异步处理能够提升用户体验,因为不需要重新加载整个页面即可获得服务器的响应。 #### 知识点总结 - **...
当Uploadify发送请求时,这个后端程序将接收到文件数据并保存到服务器。以下是一个简单的Servlet示例: ```java import javax.servlet.http.HttpServletRequest; import java.io.*; public class UploadServlet ...
在SpringMVC框架中,文件的上传和下载是常见的功能需求,主要用于处理用户的数据交互,例如用户上传图片、文档等,或者系统提供文件下载服务。本文将深入探讨如何使用SpringMVC来实现这一功能。 首先,我们需要理解...
Servlet容器(如Tomcat)接收到请求后,会将multipart数据解析成一个个Part对象,可以通过HttpServletRequest的getParts()方法获取。每个Part对象代表一个上传的文件或字段,我们可以对Part对象进行读取,例如,获取...