Javascript HTTPPOST在servlet上给出了405错误,但在JSP上也可以这样做
其他与405错误相关的问题对我来说都没有任何意义。 我正在运行ApacheTomcat9,默认安装。在开发过程中,客户端位于同一台机器上。我只在发布到servlet时收到405个错误。当我将servlet转换为JSP页面时,它工作正常,如果我在servlet上使用GET,它也工作正常。我正在使用AJAX调用。代码如下:Javascript HTTPPOST在servlet上给出了405错误,但在JSP上也可以这样做,javascript,html,ajax,jsp,servlets,Javascript,Html,Ajax,Jsp,Servlets,其他与405错误相关的问题对我来说都没有任何意义。 我正在运行ApacheTomcat9,默认安装。在开发过程中,客户端位于同一台机器上。我只在发布到servlet时收到405个错误。当我将servlet转换为JSP页面时,它工作正常,如果我在servlet上使用GET,它也工作正常。我正在使用AJAX调用。代码如下: function AJAXcommit(url, params) { var xmlHttp=GetXmlHttpObject(); xmlHttp.open("POST
function AJAXcommit(url, params) {
var xmlHttp=GetXmlHttpObject();
xmlHttp.open("POST", url, true);
xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlHttp.onreadystatechange = function() {
if(xmlHttp.readyState == 4 && xmlHttp.status == 200) {
alert(xmlHttp.responseText);
}
};
xmlHttp.send(params);
}
从javascript函数调用此函数:
AJAXcommit("setDefault.jsp","p1=a&p2=b");
工作正常,但是当我使用(几乎相同-我从另一个创建了一个)Servlet时,我得到一个405错误:
AJAXcommit("setDefault","p1=a&p2=b");
通过GET调用servlet效果很好,例如standalone(但也可以通过使用GET的不同AJAX调用从主页面调用):
servlet代码只有几行特定于servlet的代码:
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
String retVar="";
String p1 = request.getParameter("p1");
String p2 = request.getParameter("p2");
PrintWriter out = response.getWriter();
// do something with p1 and p2
out.println("Result="+retVar);
}
Same for doPost () // which solved the problem .....
我读到一些关于可能需要授权的信息?但那是什么样的授权呢?我需要为此设置一个Tomcat用户吗?
我对3个不同的servlet有这个问题。使用GET,或者将它们转换为JSP的解决方案。但是我必须考虑安全性,所以我宁愿使用Servlet上的POST。< /P> < P>我找到了答案——我专注于客户端,忽略服务器。谢谢@BalusC的评论。缺少“doPost()”。添加这一点使它起作用。“与405错误相关的其他问题对我来说都没有任何意义”,但您仍然没有显示您的
doPost()
方法。到目前为止发布的所有代码都与问题无关。所有这些都是客户端调用,但它们都会失败,并出现相同的错误,因为问题出在servlet代码中,而不是客户端代码中。如果您的doPost()
方法中包含了最简单的代码片段,但仍然会重现问题,那么我们就可以指出您的错误。不知何故,我不是这么想的,因为GET可以正常工作,所以我怀疑客户端存在问题,但我想您是对的。我编辑了我的帖子,添加了doGet部分。感谢您指出这一点,“但是在JSP上做同样的事情很好”实际上不是真的吗?
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
String retVar="";
String p1 = request.getParameter("p1");
String p2 = request.getParameter("p2");
PrintWriter out = response.getWriter();
// do something with p1 and p2
out.println("Result="+retVar);
}
Same for doPost () // which solved the problem .....