我有一个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>
答案 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。