加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ajax – HTML5 FormData在Java Servlet中返回null request.getPa

发布时间:2020-12-16 03:08:27 所属栏目:百科 来源:网络整理
导读:我的观点是HTML 5.我正在使用FormData对Servlet进行AJAX 2 POST.在servlet内部,我正在尝试读取请求参数.我看不到任何参数.但是,Google Chrome开发者控制台会显示请求的有效负载.如何在Servlet代码中获得相同的内容?任何帮助将不胜感激.这是代码. JS代码 var
我的观点是HTML 5.我正在使用FormData对Servlet进行AJAX 2 POST.在servlet内部,我正在尝试读取请求参数.我看不到任何参数.但是,Google Chrome开发者控制台会显示请求的有效负载.如何在Servlet代码中获得相同的内容?任何帮助将不胜感激.这是代码.

JS代码

var xhr = new XMLHttpRequest();
var formData = new FormData();
formData.append('firstName','ABC');
formData.append('lastName','XYZ');

xhr.open("POST",targetLocation,true);
xhr.send(formData);

Servlet代码(两个参数都返回null)

out.println("Hello! "+ request.getParameter("firstName")+ " "+ request.getParameter("lastName")+ ",thanks for sending your feedback." );

谷歌Chrome控制台

Content-Disposition: form-data; name="firstName"
XYZ
Content-Disposition: form-data; name="lastName"
ABC
HTML5 FormData API发送multipart / form-data请求.它最初设计为能够通过ajax上传文件,使用新版本2 XMLHttpRequest.以前的版本无法上传文件.

默认情况下,request.getParameter()仅识别application / x-www-form-urlencoded请求.但是你要发送一个multipart / form-data请求.您需要使用@MultipartConfig注释您的servlet类,以便您可以通过request.getParameter()获取它们.

@WebServlet
@MultipartConfig
public class YourServlet extends HttpServlet {}

或者,当您还没有使用Servlet 3.0时,请使用Apache Commons FileUpload.有关这两种方法的更详细答案,请参阅:How to upload files to server using JSP/Servlet?

如果您根本不需要上传文件,请改用“标准”XMLHttpRequest方法.

var xhr = new XMLHttpRequest();
var data = "firstName=" + encodeURIComponent(firstName)
        + "&lastName=" + encodeURIComponent(lastName);
xhr.open("POST",true);
xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
xhr.send(data);

这样,您的servlet上就不再需要@MultipartConfig了.

也可以看看:

> How to use Servlets and Ajax?
> sending a file as multipart through xmlHttpRequest

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读