Java HttpServlet未从backbone.js获取GET/POST
我不熟悉backbone.js和前端开发。如果我的问题是愚蠢的,我会道歉。我在谷歌和stackoverflow上搜索,没有得到答案。这是我的问题。由于我使用主干网作为前端,使用java作为后端,因此我尝试使用主干网的集合.fetch()和save()等来与Javaservlet通信。模型非常简单,如下所示:Java HttpServlet未从backbone.js获取GET/POST,java,javascript,tomcat,servlets,backbone.js,Java,Javascript,Tomcat,Servlets,Backbone.js,我不熟悉backbone.js和前端开发。如果我的问题是愚蠢的,我会道歉。我在谷歌和stackoverflow上搜索,没有得到答案。这是我的问题。由于我使用主干网作为前端,使用java作为后端,因此我尝试使用主干网的集合.fetch()和save()等来与Javaservlet通信。模型非常简单,如下所示: var Todo = Backbone.Model.extend({ defaults: { title: '', completed: false
var Todo = Backbone.Model.extend({
defaults: {
title: '',
completed: false
}
});
var TodosCollection = Backbone.Collection.extend({
model: Todo,
url: '/todo'
});
var todos = new TodosCollection();
todos.fetch();
我已经在web.xml中找到了
<servlet>
<servlet-name>todo</servlet-name>
<servlet-class>test.web.TodoServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>todo</servlet-name>
<url-pattern>/todo</url-pattern>
</servlet-mapping>
当我在Tomcat上运行此程序并打开网页时,服务器似乎无法访问。这样做对吗?提前谢谢 调用的URL应包括上下文路径,即应用程序部署的路径。这通常是包含应用程序的文件夹的名称或WAR文件的名称,没有扩展名
.WAR
。因此,如果您的应用程序位于文件夹xxx.war
,请尝试url:“/xxx/todo”
另外,请与Firebug联系,查看调用的确切URL以及服务器的响应。向调用方发回一些信息,以便其得到200的响应
PrintWriter out = response.getWriter();
out.println("Hello World");
我建议您在浏览器中使用webdeveloper工具来查看后台调用。此外,如果您不使用具有此功能的浏览器,则会出现firebug。如果服务器没有看到请求,您可能会收到404。首先,非常感谢您的帮助!所以我在开发者工具中尝试了chrome的网络标签(我以前不知道),发现帖子状态为“400坏请求”。我猜这与格式有关?这可能是因为您没有向请求者返回任何数据。您至少应该使用resp返回一些内容。您只需发送一个错误代码。除非将记录器配置为显示所有消息,否则可能也看不到调试消息。尝试system.out.println或使用类似logger.info的内容,而不是调试。看起来你的回复已经到了,但是你没有回复来电者。谢谢。我认为你是对的,因为我注意到内容的大小是139B和0B(chrome的开发者工具显示的两行)。但我实际上使用的是“this.collection.create(formData);”,formData显示在网页上,所以我认为它不应该是空的。你认为问题是什么?我认为你得到400分是因为你没有回应客户。你应该在下面看到我的答案。如果您这样做,它将以200响应和文本helloworld响应客户机。响应为0字节,这是错误的。尝试下面的解决方案,并让我知道。我添加到TodoServlet的doGet中,但仍然得到相同的错误。我做错什么了吗?如何检查GET和POST发送到哪个servlet?非常感谢。我试过了,成功了!非常感谢Nikos Paraskevopoulos,为我节省了很多时间!
PrintWriter out = response.getWriter();
out.println("Hello World");