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

时间:2015-03-16 15:37:50

标签: java ajax jsp tomcat servlets

我有一个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 IS安装在服务器中,如果我从localhost运行它,整个项目工作正常。问题在于本地机器和服务器之间的通信。此外,在我的localhost上运行时,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>

1 个答案:

答案 0 :(得分:1)

如果我错了,请纠正我但你的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。