【问题标题】:Is it possible to stream a text files content from a Servlet to JSP?是否可以将文本文件内容从 Servlet 流式传输到 JSP?
【发布时间】:2019-01-02 20:44:28
【问题描述】:

我在 JSP/Servlet 方面没有太多经验,我已经搜索过有关我的问题的答案,但没有找到我的问题的答案。

假设我在后端有一个名为 test.txt 的文件,我希望我的 servlet 将文件内容动态流式传输到 jsp 页面。动态是指如果文件正在更新,文本将附加到文件末尾,那么我希望客户端查看生成的 html/jsp 文件以实时查看更改。

例如,客户端将能够看到 html 文档中文本框元素的变化。

这对于 JSP/Servlet 是否可行?如果是这样,我会怎么做?

感谢您的宝贵时间。

已经尝试搜索相关问题,搜索流查询 并没有找到任何可以回答我的问题的答案。

【问题讨论】:

    标签: java jsp servlets


    【解决方案1】:

    我认为你应该加载文件:

    查看示例:How should I load files into my Java application?

    并使用 javascript 重新加载页面

    见:How to reload a page using JavaScript

    【讨论】:

    • 我从这个解决方案中得到它,每次附加后端文件并重新加载html文档时,后端文件中的新数据将可用于html文档,正确?感谢您的解决方案,但我希望能找到一个更直观的流媒体解决方案。
    【解决方案2】:

    我敢肯定你在网络开发方面并不专业,所以让我们来解决它。 当客户端(移动应用程序,浏览器,...)想要向服务器发送请求时,它将创建一个 TCP/IP(我们有更多协议,如 UDP,但 Web 应用程序在TCP/IP 协议)连接。客户端和服务器之间的所有数据都将通过此连接传输。这是您从服务器或客户端发送和接收数据的唯一方式。 当您创建一个 JSP 文件(并且在部署到服务器应用程序时它将编译为 Class 文件 [为了更好地理解搜索 JASPER JSP ENGINE])响应请求时,我将为浏览器生成如下响应:

    some Http-Headers
    Content-Type : text/html
    some other Http-Headers
    
    {JSP as a html text}
    

    因此浏览器将解析响应,呈现它并将其显示给您的客户端用户。 这意味着这个jsp页面将作为静态html页面发送。 要更新它,您有两种方法:

    1- 错误的方式: 客户端和服务器之间的保持活动连接,每次你想更新客户端时,再次发送整个响应!所以所有数据都来了,html 将再次呈现,然后......所以这是不好的方式,不安全,还有很多其他的事情。

    2- 正确方法: 使用 JavaScript 在客户端和服务器之间创建一个新的异步连接,只请求监视文件中的数据更改并实时显示给用户,而不渲染整个 html 页面.如果此连接使用 Http 协议(http 协议只是文本协议,而不是 TCP/IP 之类的网络协议),请在您的请求标头中添加 Connection : Keep-Alive 以使服务器保持活动状态。

    注意:如果您想更好地理解,请在 java 中搜索 socket 并了解其工作原理。

    【讨论】:

    • 您好,感谢您的回答,尽管我确实发现其中的某些部分很粗鲁。我了解套接字在 Java 中是如何工作的,但目前它还不是一个可行的选择。
    • @user3470766 对不起,如果我说了一些你认为粗鲁但我不想这样做的事情。我从来没有告诉你直接使用套接字来做它,我只是试图向你展示一些观点,现在如果你知道它是如何工作的,那么你可以制作一个 servlet 来对客户端产生一些响应以显示文件更改。抱歉,但这是您唯一的方法,而且也很容易。希望能帮到你。
    • 嗨@Alireza 感谢您的回复。我很感激,并会尝试。祝你有美好的一天。
    猜你喜欢
    • 2021-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-12
    • 2014-05-04
    • 1970-01-01
    相关资源
    最近更新 更多