【问题标题】:Using both GET and POST同时使用 GET 和 POST
【发布时间】:2011-11-16 16:15:51
【问题描述】:

如您所见,我是 jsp/ajax 的新手。
在jsp/ajax文件上传网页中,POST用于上传文件,GET用于获取上传进度(使用ajax)。

在 doPost() 文件上传(它应该在服务器端“下载”?)完成并设置进度监听器。

在 doGet() 响应中写入 XML(ajax HttpRequest 是 GET)。
在 doPost() 中响应写入的 HTML 标记未显示在浏览器中。重定向在 doPost() 中也不起作用。
我不能在 doGet() 中执行上述任何操作,因为它在 ajax 中被多次调用。不是吗?
如果我想在不同的页面(比如文本文件)显示上传文件的内容,我应该怎么做? (我的意思是应该在哪种方法中发生重定向?)

如果进度为 100%,我目前正在做的是 ajax,使用 window.open() 打开显示文件内容的页面 谁能解释一下正在进行的过程(顺序)。
实际上这是我遵循的代码
ajax file uploading progress

【问题讨论】:

  • 请参阅有关闲聊/开放式问题的常见问题解答,并考虑修改为单个具体问题。

标签: ajax jsp servlets


【解决方案1】:

在 doPost() 中响应写入的 HTML 标记不会显示在浏览器中

也许您需要先刷新响应缓冲区?然而,这与重定向不起作用的说法相冲突。也许您的意思是只显示了几个 HTML 标签而不是全部?


重定向在 doPost() 中也不起作用

如果您事先写入 HTML 标记并将其刷新到响应中,这确实会在服务器日志中显示 IllegalStateException: response already committed 失败(您阅读了吗?)。


如果我想在不同的页面(比如文本文件)显示上传文件的内容,我应该怎么做?

doPost() 中调用response.sendRedirect() 之前,不要不要在响应中写入任何内容。让 ajax 和 doGet() 操心处理您之前所说的那些“HTML 标签”。

在相关说明中,您可能会发现这个答案也很有趣:HTML5 File Upload to Java Servlet

【讨论】:

  • 谢谢。看来我需要花相当多的时间来研究这些。无论如何它是否发生如下?1-单击提交按钮后调用 doPost() 方法。2-在 doPost() 文件中正在下载。3-意味着多次调用 doGet() 并读取响应 XML。4-上传文件后,执行 doPost() 的最后(底部)的任何代码。在 TCP/IP 监视器中在 Eclipse 中,对浏览器的最后响应似乎是表示进度百分比为 100 的 XML。我所说的 HTML 标记的意思是 doPost() 底部的输出,然后我尝试将其替换为 response.sendRedirect()
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多