在向Servlet发出请求时,Ajax返回404

时间:2018-03-17 06:03:39

标签: java ajax tomcat ssl

我目前在我的Ubuntu AWS EC2服务器上运行apache tomcat。我有我所有的html / js独家webapps服务,那些工作正常。我目前正在尝试导入我的Java项目,但是我无法通过AJAX调用来访问我的java(我收到了404错误)。对我来说奇怪的是,我的本地版本可以很好地处理这些AJAX请求。我怀疑在执行此操作Tomcat SSL Guide后我可能会有阻止我的防火墙。我会发布一些代码,也许我有一个逻辑错误。

的web.xml

我曾经没有注释掉这个,但我尝试了注释。这适用于本地,但不适用于服务器。

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">

<!-- <servlet>
    <servlet-name>response</servlet-name>
    <servlet-class>Demo.ServiceReceiver</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>response</servlet-name>
    <url-pattern>/sendIt</url-pattern>
</servlet-mapping> -->
</web-app>

ServiceReceiver.java

@WebServlet("/sendIt")
public class ServiceReceiver extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    doPost(request, response);
}

public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    String first = request.getParameter("stuff");
    String second = request.getParameter("other");

    Driver driver = new Driver();

    String ret = driver.runner();
    response.getWriter().write(ret);
}
}

index.js

$(document).ready(function() {
$("#testClick").click( function()
    {
        testerClick();
    }
);
});

function testerClick() {
var send;
send = {
    stuff:"ayyyye",
    other:"naayyyyyy"
};

$.ajax({
    url: 'sendIt',
    data: send,
    type:'GET',
    cache: false,
    contentType: "application/json; charset=utf-8",
    success:function(data){
        alert(data);
    },
    error:function(error){
        alert(error);
    }
});
}

同样,这一切都适用于本地,所以我怀疑我在不知不觉中阻止了自己。我想要访问的网站是https://tyleralangreen.com/Dice_Game_war/。如果您点击该按钮,您会看到您获得了404.地址看起来正确:https://tyleralangreen.com/Dice_Game_war/sendIt?stuff=ayyyye&other=naayyyyyy&_=1521266411409

1 个答案:

答案 0 :(得分:0)

我找到了这个问题。我查看了所有我的tomcat日志,查找错误,一个小错误说它不会编译我的Java类。哦哇,谢谢近乎无声的错误。无论如何,问题说:

  

org.apache.catalina.core.ApplicationContext.log标记servlet   [Demo.ServiceReceiver]不可用19-Mar-2018 01:26:15.444严重   [AJP-NIO-127.0.0.1-8009-EXEC-8]   org.apache.catalina.core.StandardWrapperValve.invoke分配   servlet的异常[Demo.ServiceReceiver]   java.lang.UnsupportedClassVersionError:Demo / ServiceReceiver已经   由更新版本的Java Runtime编译(类文件   版本53.0),此版本的Java Runtime仅识别类   文件版本高达52.0(无法加载类[Demo.ServiceReceiver])

我看了,我正在使用intellij上的Java 9进行编译,但是我的服务器上安装了Java 8。我将IntelliJ上的默认JDK更改为Java 8,一切正常。我希望我能帮助别人。