Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/453.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 HttpServlet未从backbone.js获取GET/POST_Java_Javascript_Tomcat_Servlets_Backbone.js - Fatal编程技术网

Java HttpServlet未从backbone.js获取GET/POST

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

我不熟悉backbone.js和前端开发。如果我的问题是愚蠢的,我会道歉。我在谷歌和stackoverflow上搜索,没有得到答案。这是我的问题。由于我使用主干网作为前端,使用java作为后端,因此我尝试使用主干网的集合.fetch()和save()等来与Javaservlet通信。模型非常简单,如下所示:

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");