Java “如何显示”;“数据加载”;在使用servlet的jsp页面中

Java “如何显示”;“数据加载”;在使用servlet的jsp页面中,java,javascript,jsp,Java,Javascript,Jsp,我们有一个经典的JSP+Servlets应用程序,当页面中的数据需要一段时间才能加载时,我们希望显示“内容正在加载”的消息 有没有一种简单的方法可以通过JS实现这一点 情景: 页面1(a.jsp)->选择下拉菜单-> 单击“搜索//将数据发送回” 数据库服务器 URL更改为(b.jsp),显示白色页面,然后在30秒后加载数据 在这30秒钟里,我想展示一个旋转器或一些信息 添加ajax或jquery需要进行设计更改,这是我们目前无法做到的。虽然应用程序已经使用jQuery进行其他操作,但是b.

我们有一个经典的JSP+Servlets应用程序,当页面中的数据需要一段时间才能加载时,我们希望显示“内容正在加载”的消息

有没有一种简单的方法可以通过JS实现这一点

情景:

  • 页面1(a.jsp)->选择下拉菜单-> 单击“搜索//将数据发送回” 数据库服务器
  • URL更改为(b.jsp),显示白色页面,然后在30秒后加载数据
在这30秒钟里,我想展示一个旋转器或一些信息


添加ajax或jquery需要进行设计更改,这是我们目前无法做到的。虽然应用程序已经使用jQuery进行其他操作,但是b.jsp正在从该页面进行DB调用…

AJAX是实现这一点的方法。服务器端需要一些东西来帮助您跟踪进度。

使用ajax请求加载数据(在b.jsp中)

制作一个加载时启动的JS函数,让它显示消息(“还剩30秒”),然后让它执行ajax请求以加载必要的数据

我建议您使用一些js框架,比如jQuery,它会使事情变得更简单


为了在服务器端处理ajax请求,您需要再创建一个servlet并将其映射到某个url,如
your\u app\u name/ajaxsupport
。这个servlet应该以某种方便的格式返回数据(可以是纯文本、xml、JSON或其他格式)。在客户机上,您将处理并显示接收到的数据。

在jsp中调用DB将是非常不受欢迎的。考虑到问题的前提,你可以

//b.jsp

<div id="msg">data is loading...</div>

<% 
   out.flush();
   db.performanLengthJob(); 
%>

<script> $("msg").remove(); </script>

<p>Data is loaded!</p>
//b.jsp
数据正在加载。。。
$(“msg”).remove();
数据已加载


一个快速解决方案是使用基本页面html正文的onbeforeunload JS事件,如

<body onbeforeunload="$("yourComponent").show();">

beforeunload仅在客户端即将关闭窗口或导航离开时调用,而不是在窗口加载完成时调用。