Java 此URL不支持HTTP方法GET-Tomcat
我知道这个问题在这里已经被问过很多次了,但是在阅读了其他线程的几十个答案和解决方案之后,我一直无法解决我的问题 我目前正在一台没有管理权限的计算机上工作,我最好的猜测是防火墙会阻止本地主机上的服务器 这是我的密码: GetTimeServlet.java Web.xml 表单数据以Post方式发送,服务器只处理Post请求。我在Eclipse中也没有收到任何错误或警告。这是怎么回事Java 此URL不支持HTTP方法GET-Tomcat,java,ajax,eclipse,tomcat,Java,Ajax,Eclipse,Tomcat,我知道这个问题在这里已经被问过很多次了,但是在阅读了其他线程的几十个答案和解决方案之后,我一直无法解决我的问题 我目前正在一台没有管理权限的计算机上工作,我最好的猜测是防火墙会阻止本地主机上的服务器 这是我的密码: GetTimeServlet.java Web.xml 表单数据以Post方式发送,服务器只处理Post请求。我在Eclipse中也没有收到任何错误或警告。这是怎么回事 编辑:我正在尝试POST和而不是GET。对于HTTP GET方法,您应该在servlet(GetTimeServl
编辑:我正在尝试POST和而不是GET。对于HTTP GET方法,您应该在servlet(GetTimeServlet.java)中定义doGet方法 事实上——但我想做的是POST,而不是GET。您在Dev Tools(F12)-Network选项卡中检查了Ajax调用的状态了吗?上面说什么?您正在使用这样的绝对URL
http://localhost:8080/ajaxdemo/get-当前时间,所以您需要检查上下文路径(ajaxdemo)部分是否正确。这与您在其他页面中看到的相同吗?如果URL是正确的,并且请求实际上来自您的doPost方法,请尝试在该方法中添加一些记录器,并检查浏览器控制台中是否存在任何javascript错误?尝试在您的ajaxAsyncPostRequest()
中添加一个警报/console.log,并查看当您单击该链接时控件是否真的出现了。您可以下载一个浏览器插件REST客户端,发出POST请求并测试它是否按预期工作。这将排除服务器端。另外,通过放弃对IE6和更早版本的支持来简化代码。不应指望任何人仍然支持这些计划。
//I have tried overriding
public class GetTimeServlet extends HttpServlet
{
private static final long serialVersionUID = 1L;
public void doPost (HttpServletRequest request,HttpServletResponse response)
throws ServletException, IOException
{
StringBuilder sb = new StringBuilder();
BufferedReader reader = request.getReader();
try {
String line;
while ((line = reader.readLine()) != null) {
sb.append(line);
}
} finally {
reader.close();
}
response.setHeader("Cache-Control", "no-cache");
response.setHeader("Pragma", "no-cache");
response.setHeader("Access-Control-Allow-Origin", "*");
PrintWriter out = response.getWriter();
newtest.DbQueries dbq = new newtest.DbQueries();
out.print((int) Math.round(dbq.getSiteScore(sb.toString())));
}
}
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
<display-name>exjobb</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>GetTime</servlet-name>
<servlet-class>servlets.GetTimeServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>GetTime</servlet-name>
<url-pattern>/get-current-time</url-pattern>
</servlet-mapping>
</web-app>
function ajaxAsyncPostRequest(reqURL, temp)
{
temp = encodeURIComponent(temp);
var params = "site=" + temp + "&userrating=" + $("#slider").val() + "&usercomment=" + $("#comment-textarea").val()
+ "&chkbox1=" + $("#sq_checkbox1").val() + "&chkbox2=" + $("#sq_checkbox2").val();
//Creating a new XMLHttpRequest object
var xmlhttp;
if (window.XMLHttpRequest){
xmlhttp = new XMLHttpRequest(); //for IE7+, Firefox, Chrome, Opera, Safari
} else {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); //for IE6, IE5
}
//Create a asynchronous GET request
xmlhttp.open("POST", reqURL, true);
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
//When readyState is 4 then get the server output
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4) {
if (xmlhttp.status == 200)
{
gauge.refresh(xmlhttp.responseText);
//alert(xmlhttp.responseText);
}
else
{
//alert(xmlhttp.status);
}
}
};
xmlhttp.send(params);
}