HTTP POST在servlet上产生405错误,但在JSP上也能正常工作]]

问题描述 投票:0回答:1

与405错误相关的其他问题对我来说都没有意义。我正在运行Apache Tomcat 9,默认安装。在开发过程中,客户端位于同一台计算机上。我仅在POST到Servlet时收到405错误。当我将servlet转到JSP页面时,它可以正常工作,如果我在servlet上使用GET,它也可以工作。我正在使用AJAX通话。这是代码:

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可以正常工作,例如独立运行(也可以通过使用GET的不同AJAX调用从我的主页开始,):

 http://localhost:8080/myproject/setDefault?p1=a&p2=b

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个不同的servlets这个问题。使用GET或将其转换为JSP即可解决。但是我必须考虑安全性,因此我宁愿在Servlet上使用POST。

与405错误相关的其他问题对我来说都没有意义。我正在运行Apache Tomcat 9,默认安装。在开发过程中,客户端位于同一台计算机上。我得到405 ...

javascript html ajax jsp servlets
1个回答
0
投票

我找到了答案-我专注于客户端,忽略了服务器。感谢@BalusC的评论。 “ doPost()”丢失了。添加后使其生效。

© www.soinside.com 2019 - 2024. All rights reserved.