【问题标题】:Java JSP Jquery AJAX ServletJava JSP Jquery AJAX Servlet
【发布时间】:2017-12-07 14:56:37
【问题描述】:

更新

我不同意建议问题的答案将直接适用于该问题,因为我使用的是非标准目录结构。

/opt/tomcat/webapps/nothing/
    /public/
        /views/
            /home/
                home.jsp
            /nothing/
                nothing01.jsp
            /partials/
                header.jsp
                footer.jsp
        /logic/
            /nothing/
                nothing01.js
                nothing01test.java
                nothing01test.class
        /resources/
    /WEB-INF/
        web.xml

我在尝试使用 Jquery AJAX 在我的应用程序中使用 JSP Servlet 时有点困惑。

我很可能错过了一个步骤(或完全错误)。

我有我的看法

/public/view/nothing/nothing01.jsp

<% include file="../partials/header.jsp" %>
<button id="buttTest">Test</button>
<% include file="../partials/footer.jsp" %>

链接到一个 Javascript 文件,用于对我的 Java Servlet 进行 Jquery AJAX 调用

/public/logic/nothing/nothing01.js

$(document).ready(function() {
    $("#buttTest").on("click", function() {
       ajaxTest();
    });
});

function ajaxTest() {

    $.ajax ({
        url      : "nothing01test",
        type     : "GET",
        cache    : false,
        dataType : "json",
        success  : function(results) {
                       console.log("success");
                       console.log(JSON.stringify(results));
                   },
        error    : function(results) {
                       console.log("error");
                       console.log(JSON.stringify(results));
                   }
    });

}

然后我有我的源代码和编译的 Java Servlet

/public/logic/nothing/nothing01test.java
/public/logic/nothing/nothing01test.class

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class nothing01test extends HttpServlet {
    protected void doGet (
        HttpServletRequest request,
        HttpServletResponse response
    ) throws
        ServletException,
        IOException
    {
        PrintWriter out = response.getWriter();
        out.println("AJAX RESPONSE");
     }
}

编译工作正常,没有任何错误,但我不确定如何使其可用于 Jquery AJAX 请求,因为该请求以 404 not found 错误响应。如果我尝试指定 AJAX url 指向 java 和 class 文件,它只会拉入内容而不是执行。

更新

我将包含 web.xml 文件以防万一

/WEB-INF/web.xml

<?xml version="1.0" encoding="UTF-8"?>
<!--
      Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  The ASF licenses this file to You under the Apache License, Version 2.0
  (the "License"); you may not use this file except in compliance with
  the License.  You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
-->
<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_4_0.xsd"
  version="4.0"
  metadata-complete="true">

  <display-name>Java Web App</display-name>
  <description>
     Welcome to Java Web App
  </description>

  <welcome-file-list>
    <welcome-file>public/views/home/home.jsp</welcome-file>
  </welcome-file-list>

</web-app>

【问题讨论】:

  • 我猜你的 web.xml 是正确的(?)
  • 我没有对 web.xml 做任何事情,我应该做吗?
  • 特伦特,你的nothing01test servlet 没有映射到任何 URL 是真的吗?引用问题中的accepted answer 提到了这一点。搜索以“将此 servlet 映射到 URL 模式”开头的段落

标签: java jquery ajax jsp servlets


【解决方案1】:

您的 AJAX 调用不正确,请尝试将其替换为以下代码

$(document).ready(function() {
    $("#buttTest").on("click", function() {
       ajaxTest();
    });
});

function ajaxTest() {
    $.ajax({
        url      : "nothing01test",
        type     : "GET",
        cache    : false,
        dataType : "json",
        success  : function(results) {
                       console.log("success");
                       console.log(JSON.stringify(results));
                   },
        error    : function(results) {
                       console.log("error");
                       console.log(JSON.stringify(results));
                   }
    });
}

【讨论】:

  • 哎呀是复制粘贴错误感谢您的注意
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-06-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-02
  • 1970-01-01
相关资源
最近更新 更多