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