gpt4 book ai didi

java - 无法从 HttpServletRequest 读取表单数据

转载 作者:塔克拉玛干 更新时间:2023-11-01 19:08:44 26 4
gpt4 key购买 nike

我有一个简单的 xmlHttpRequest,它向 servlet 提交 DELETE。

这是JS:

        function sendDELETE () {
var http = new XMLHttpRequest();
var url = "myServlet";
var params = "param="+document.getElementById("param").value;
http.open("DELETE", url, false);

//Send the proper header information along with the request
http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");

http.onreadystatechange = function() {//Call a function when the state changes.
if(http.readyState == 4 && http.status == 200) {
}
}
http.send(params);
}

这由按钮上的 onClick 事件调用。

这是 chrome 开发工具显示的内容:

Request URL:http://xxxxxx/myServlet
Request Method:DELETE
Status Code:200 OK
Request Headersview source
Accept:*/*
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-US,en;q=0.8
Connection:keep-alive
Content-Length:36
Content-type:application/x-www-form-urlencoded
Host:xxxxxxxxx
Origin:http://xxxxxxx
Referer:http://xxxxxxxxxxx/main.html
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.143 Safari/537.36
Form Dataview parsed
param=value


Response Headersview source
Connection:Keep-Alive
Content-Length:0
Content-Type:text/html
Date:Wed, 27 Aug 2014 01:50:10 GMT
Keep-Alive:timeout=65, max=7998
Server:Apache-Coyote/1.1

通过查看这个,我可以清楚地看到表单数据在请求中有 param=value

在我的服务器上,doDelete 我尝试了两种方法:

String param = req.getParameter("param");

String inputMap = CharStreams.toString(req.getReader());
String [] parts = inputMap.split("=");
String param = parts[1];

但两者都不起作用 - 'param' 仍然为 null....

我做错了什么?

最佳答案

只有 POST 请求将参数作为请求正文中的实体。您必须将其作为 URL 的一部分发送。

参见 RFC 2616 : "DELETE 方法请求源服务器删除由 Request-URI 标识的资源"。

关于java - 无法从 HttpServletRequest 读取表单数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25517824/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com