Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java jsp AJAX调用从Servlet控制器返回代码,而不是执行它_Java_Ajax_Jsp_Tomcat_Servlets - Fatal编程技术网

Java jsp AJAX调用从Servlet控制器返回代码,而不是执行它

Java jsp AJAX调用从Servlet控制器返回代码,而不是执行它,java,ajax,jsp,tomcat,servlets,Java,Ajax,Jsp,Tomcat,Servlets,我有一个index.jsp调用执行操作并返回结果的Java控制器。所有代码都位于服务器中。因此,我让Tomcat在服务器上运行,并从本地机器调用索引页。问题是,调用控制器的AJAX返回的是整个Java代码,而不是在服务器中执行并返回结果。所以我真的要 import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class LoginController e

我有一个index.jsp调用执行操作并返回结果的Java控制器。所有代码都位于服务器中。因此,我让Tomcat在服务器上运行,并从本地机器调用索引页。问题是,调用控制器的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>

MVCDemo
登录控制器
登录控制器
mvcdemo.controllers.LoginController
登录控制器
/登录控制器
更新控制器
更新控制器
mvcdemo.controllers.UpdateController
提交控制器
提交控制器
mvcdemo.controllers.SubmitController

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

解决方案1

无论如何,请尝试使用servlet 3.0注释(未测试):

然后

解决方案2

如果您不能使用Servlet3.0注释(它确实很有用,而且比web.xml更直观)

然后您必须使用web.xml


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

。java基本上是一个未编译的文本文件,其中包含java源代码。。。它编译成一个.class文件。不管文件名如何,它都与此无关,但servlet映射与此无关。。。。。您使用的是Servlet 3.0注释还是web.xml?
。/src/mvcdemo/controllers/LoginController.java
为什么该文件甚至存在于服务器上(它不应该存在)?您是如何部署它的?文件位于服务器中的该位置。你建议在哪里买呢@NeilosI建议您在服务器上根本没有该文件。。。它不应该在那里。您应该只部署预编译的应用程序(包含二进制格式的.class文件)。Java是一种编译语言,.Java文件是未编译的源代码。未编译的源代码根本不在JVM中运行,因此它不应该在服务器上。一个例外是.jsp文件,它在第一次运行时编译成servlet(从源代码)。请仔细阅读,以便您理解。我的jsp正在调用控制器,但它带回了控制器拥有的代码,而不是在服务器上运行它。我尝试添加@WebServlet(“/login”),但幸运的是,jsp没有调用控制器。。我认为您的意思是jsp包含一些javascript,浏览器使用这些javascript调用LoginControllerservlet。否则,我不知道为什么要在jQueryAjax函数中使用该url。这不正确吗?还有,您正在运行哪台服务器?它支持Servlet3.0注释吗?到目前为止,您是如何定义servlet的?您是否在web.xml中定义它们?当您使用
@WebServlet(“/login”)
并尝试该URL时,您会得到什么响应?500404…?我添加了web.xml的内容作为编辑
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);
        ...
        }
 });