首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Servlet 3.0中的AsyncContext无限浏览器加载

问Servlet 3.0中的AsyncContext无限浏览器加载
EN

Stack Overflow用户
提问于 2012-05-08 01:19:49
回答 1查看 617关注 0票数 1

我要做流媒体了。我有一个.jsp文件,在.jsp文件的末尾,我使用以下代码包含了我的异步Servlet:

代码语言:javascript
复制
<jsp:include page = '/simple' flush = 'true' />

所以我希望当整个页面加载时,打开一个无限的异步请求,它将处理异步响应。

下面是我的Servlet代码:

代码语言:javascript
复制
public class SimpleAsyncServlet extends HttpServlet {
    public static AsyncContext ctx;
    protected void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
        req.setAttribute("org.apache.catalina.ASYNC_SUPPORTED", true);
        ctx = req.startAsync();
        ctx.setTimeout(0);
    }
}

在其他java类中,我使用静态SimpleAsyncServlet.ctx.getResponse.getWriter()将一些javascript代码打印到当前页面。它正在工作,没有任何问题,但浏览器一直显示它正在加载。根据异步思想,页面应该被加载,并且这个异步请求应该在后台保持活动状态,就是这样,但是no....browser会一直加载页面直到永远(超时是0,因为我想有无限的打开请求)

我哪里错了,我如何在没有加载浏览器的情况下发出这个永久请求?

附注:我尝试直接从url (localhost.../simple)访问我的servlet,但在页面上看不到任何打印内容。它会一直加载到永远。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-05-08 04:22:44

你正在尝试实现不可能的事情。

浏览器将通过以下方法之一显示页面正在加载,直到它知道已收到完整的请求:

当使用分块编码时,它收到了在Content-Length报头中声明的字节数

  • 它收到了end chunk

既然你想要一个“无限”的响应,上面的三种选择都不会发生。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10486274

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档