2014-11-24 103 views
0

我正在开发基于Java servlet的Web应用程序。如何自动刷新Java servlet页面

在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(),但没有奏效。

+0

你为什么使用'load'? – epascarello 2014-11-24 19:59:18

+0

有两种方法可以做到这一点,一个是做拉(即使用元刷新),每隔30秒左右从服务器拉数据。第二种方法是将数据从服务器推送到您的页面,请参阅[Async-IO]中的大气框架(http://async-io.org/) – mprabhat 2014-11-24 20:03:04

回答

0

您可以使用此刷新我已经使用这个页面之前只是把这个在你的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,如果它被刷新一次,那么它将不会重新加载第二次,并将删除cookie。

0

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

例如:

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

请问最近加载完成后,在5秒钟内加载页面。