gpt4 book ai didi

java - 包含jsp后如何关闭输出流

转载 作者:行者123 更新时间:2023-12-02 08:32:56 26 4
gpt4 key购买 nike

我有一个网页,可以通过 ajax 调用来获取一些数据。该数据需要很长时间来计算,所以我所做的是第一个ajax服务器调用返回“正在加载...”,然后线程继续计算数据并将其存储在缓存中。同时,客户端 JavaScript 每隔几秒就会通过另一个 ajax 调用进行检查,以查看缓存是否已加载。

这是我的问题,它可能不是问题。在对服务器进行初始 ajax 调用之后,我执行了

...getServletContext().getRequestDispatcher(jsppath).include(request, response);

然后我使用该线程进行计算。我不介意与此绑定(bind)网络服务器线程,但我希望浏览器获得响应而不是等待服务器关闭套接字。

我无法判断服务器是否在包含后关闭套接字,但我猜不是。

那么,在写出响应后、开始长时间计算之前,如何强制关闭流呢?

我试过了

o = response.getOutputStream();
o.close();

但我收到非法状态异常,表示输出流已被获取(大概是由我包含的 jsp 获取的)

所以我的问题:

  1. 是关闭套接字的网络服务器(我猜不是,因为你总是可以包含另一个jsp)

  2. 如果正如我假设的那样没有关闭套接字,我该怎么做?

最佳答案

如果计算仍在同一线程中进行,我不知道如何关闭 OutputStream。

您需要在新线程中开始计算,然后从 Servlet 返回,响应将自动发回。

如果您确实需要关闭编写器,请执行此操作,

  response.getWriter().close();

关于java - 包含jsp后如何关闭输出流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2782747/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com