我的 .jsp AJAX 调用从我的 Servlet 控制器返回代码而不是执行它

My .jsp AJAX call is returning the code from my Servlet controller instead of executing it

我有一个 index.jsp 调用一个 Java 控制器执行一个操作并 returns 一个结果。所有代码都位于服务器中。所以我在服务器上有 Tomcat 运行ning 并从我的本地机器调用索引页面。问题是调用控制器的 AJAX 正在带回整个 Java 代码,而不是在服务器中执行它并带回结果。所以我真的得到

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class LoginController extends HttpServlet {

public LoginController()
{
    super();
}

等这是 Ajax 代码:

function loadRows()
{
     var review_ID = location.search.split('review=')[1];

     $.ajax({
            url : "../src/mvcdemo/controllers/LoginController.java",
            type : "post",
            data : {
                "reviewID" : review_ID 
            },
            success : function(data) {
                alert(data);
            ...
            }
     });

PS:Java 安装在服务器中,如果我从我的本地主机 运行 整个项目工作正常。问题出在本地计算机和服务器之间的通信中。此外,当 运行 在我的本地主机上使用它时, URL 只是 "LoginController" 但是当 运行 在服务器上使用它时它找不到文件,所以我不得不使用相对路径并在末尾添加“.java”以使其工作,我不确定这是否与它有任何关系。

提前感谢您提供任何信息!

编辑:

我正在使用 web.xml 来定义我的 Servlet,这是代码:

<?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" xmlns:web="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_2_5.xsd" id="WebApp_ID" version="2.5">
   <display-name>MVCDemo</display-name>
   <servlet>
      <description></description>
      <display-name>LoginController</display-name>
      <servlet-name>LoginController</servlet-name>
      <servlet-class>mvcdemo.controllers.LoginController</servlet-class>
   </servlet>
   <servlet-mapping>
      <servlet-name>LoginController</servlet-name>
      <url-pattern>/LoginController</url-pattern>
   </servlet-mapping>
   <servlet>
      <description></description>
      <display-name>UpdateController</display-name>
      <servlet-name>UpdateController</servlet-name>
      <servlet-class>mvcdemo.controllers.UpdateController</servlet-class>
   </servlet>
   <servlet>
      <description></description>
      <display-name>SubmitController</display-name>
      <servlet-name>SubmitController</servlet-name>
      <servlet-class>mvcdemo.controllers.SubmitController</servlet-class>
   </servlet>

如果我错了请纠正我,但是你的 jsp 没有调用控制器。

解决方案 1

无论如何使用 servlet 3.0 注释(未测试)试试这个:

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/login")
public class LoginController extends HttpServlet {

    public LoginController() {
        super();
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) {
        // do whatever it is you want
    }

}

然后

$.ajax({
        url : "/login",
        type : "post",
        data : {
            "reviewID" : review_ID 
        },
        success : function(data) {
            alert(data);
        ...
        }
 });

解决方案 2

如果你不能使用 servlet 3.0 注释(这真的很有用,比 web.xml 更直观)

那么你将不得不使用web.xml

您需要确保服务器正确加载了您的 web.xml。