【问题标题】:how to show "data loading" in a jsp page using servlets如何使用 servlet 在 jsp 页面中显示“数据加载”
【发布时间】:2010-07-18 16:31:15
【问题描述】:

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

有没有简单的方法通过 JS 做到这一点?

场景:

  • Page1 (a.jsp) -> 选择下拉菜单 -> 点击搜索 //数据发送回 数据库服务器
  • URL 更改为 (b.jsp),显示白页,然后在 30 秒后加载数据

在这 30 秒内,我想显示一个微调器或一些消息。

添加 ajax 或 jquery 需要我们现在无法进行的设计更改。虽然该应用程序已经将 jQuery 用于其他内容,但 b.jsp 正在从该页面进行数据库调用...

【问题讨论】:

    标签: java javascript jsp


    【解决方案1】:

    在 jsp 中调用 DB 会非常不受欢迎。鉴于问题的前提,您可以

    //b.jsp
    
    <div id="msg">data is loading...</div>
    
    <% 
       out.flush();
       db.performanLengthJob(); 
    %>
    
    <script> $("msg").remove(); </script>
    
    <p>Data is loaded!</p>
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

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

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

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

        【讨论】:

          【解决方案4】:

          一个快速的解决方案是使用基本页面 html 正文 s.g. 的 onbeforeunload JS 事件。喜欢

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

          【讨论】:

          • beforeunload 仅在客户端即将关闭窗口或导航离开时调用,而不是在窗口完成加载时调用。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2015-05-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-07-26
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多