使用JavaServlet的http流
我有一个基于servlet的web应用程序,它生成两组数据。网页中的一组数据是必需的,另一组数据是可选的。我希望尽可能快地呈现基本数据,然后将可选数据流化。我正在考虑将基本数据写入使用JavaServlet的http流,java,http,jakarta-ee,servlets,Java,Http,Jakarta Ee,Servlets,我有一个基于servlet的web应用程序,它生成两组数据。网页中的一组数据是必需的,另一组数据是可选的。我希望尽可能快地呈现基本数据,然后将可选数据流化。我正在考虑将基本数据写入HttpServletRequest的输出流,然后调用HttpServletRequest.flushBuffer()将响应提交给客户端,但不从servlet代码返回,而是创建可选数据,再次将其写入outputstream,然后从servlet代码返回。 在这个计划中有哪些地方可能出错?这是实现这一目标的标准做法吗?我
HttpServletRequest
的输出流,然后调用HttpServletRequest.flushBuffer()
将响应提交给客户端,但不从servlet代码返回,而是创建可选数据,再次将其写入outputstream,然后从servlet代码返回。
在这个计划中有哪些地方可能出错?这是实现这一目标的标准做法吗?我会这样做:
- 以普通servlet+javascript的形式返回基本数据,以执行Ajax调用可选数据。然后显示基本数据,不显示可选数据李>
<html>
<body>
essential data
<javascript to do ajax call>
essential data
</body>
</html>
基本数据
基本数据
直接在
和
之间刷新响应缓冲区是有意义的,这样浏览器就可以尽快检索到JS/CSS资源的引用。在一个特定的环境中这样做是没有意义的,因为它是用来生成HTML的用户
</head>
<% response.flushBuffer(); %>
<body>
此外,将缓冲区刷新到HTML
的一半几乎毫无意义,因为您依赖于浏览器是否会呈现半成品HTML正文。例如,MSIE在到达
之前不显示任何内容
另一种完全不同的方法是在页面加载完成后,使用JS/Ajax在后台异步加载“可选”内容。例如(jQuery风味):
另见:
<%@page buffer="1kb" %>
$(function() {
$("#somediv").load("somefragment.jsp");
});