【问题标题】:How to refresh the Java servlet page automatically如何自动刷新 Java servlet 页面
【发布时间】:2015-01-22 15:38:00
【问题描述】:

我正在开发一个基于 Java servlet 的 Web 应用程序。

在 Java servlet 后面,有一个线程在工作。 Java servlet 输出 html 和 java 脚本代码。因此,html 和 java 脚本代码随线程动态变化。

我做了以下代码。 html和javascript代码由response.getWriter().println()输出。

问题是;当一个线程完成时,什么都不显示。 但是,当我在线程完成后手动刷新页面 (Ctrl-R) 时,我得到了我期望的页面。

<head>
<script type=\"text/javascript\">
var auto_refresh = setInterval(
function start()
{
$('#load_latest').load('./PubRecommendation' + ' #load_latest');
}, 2000);
</script>           
</head>


if (result == null) {
    // the variable result is received from a behind thread every 2 seconds. 
    // while a thread is processed
    <div id=\"load_latest\">
    <p>Currently processing. <p>
    </div>
} else {
    // a thread is completed
    <div id="refresh">
    <p>Process is done. <p>
    </div>
}  

我已经尝试过location.reload(),但没有成功。

【问题讨论】:

  • 你为什么使用load
  • 有两种方法可以做到这一点,一种是拉取(即使用元刷新),然后每 30 秒左右从服务器拉取数据。第二种方法是将数据从您的服务器推送到您的页面,请参阅 Atmosphere Framework Async-IO

标签: java javascript servlets web-applications


【解决方案1】:

术语是Meta Refresh。搜索 Google 会给你足够的例子。

例如:

<meta http-equiv="refresh" content="5; url=/PubRecommendation#load_latest">

将在最后一次加载完成后的 5 秒内加载您的页面。

【讨论】:

    【解决方案2】:

    你可以用它来刷新我用过的页面,然后把它放在你的html或jsp页面的末尾:

    <script type="text/javascript">
    var cookie = ("" + document.cookie);
    if(!cookie.match(/\S/))
    {
        document.cookie = "refresh";
        location.reload(true);
    }
    else
    {
        document.cookie = "refresh; expires=Thu, 01 Jan 1970 00:00:00 GMT";
    }
    </script>
    

    这将在页面第一次加载时设置一个cookie,然后会自动刷新并检查cookie,如果刷新过一次则不会重新加载第二次并删除co​​okie。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-04-26
      • 2013-02-23
      • 2012-07-21
      • 2015-12-06
      • 2012-10-24
      • 2013-03-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多