经常刷新页面上的信息

时间:2013-02-23 15:48:43

标签: java spring jsp spring-mvc

我是Spring和MVC的新手,但我有一个问题需要解决。在这种情况下,我不知道什么是正确的方法。

我上课了:

public class RandomNumbers
extends TimerTask

{ 
private Random random;
private int actualNumber;

public RandomNumbers(  )
{    
    this.random = new Random();
}

@Override
public void run()
{
    actualNumber =
        random.nextInt( 100 );        
    System.out.println( actualNumber );
}

public int getActualNumber()
{
return actualNumber;
}
}

这样可行。我从这个类和计划任务中创建了新bean。例如。每执行2次run()并生成新的acutalNumber。内部控制器我添加了:

model.addAttribute( "actualNumber", randomNumbers.getActualNumber() );

那可行,我在jsp页面上打印了第一个值为actualNumber。

问题是:即使生成新号码(sysout工作),页面上的信息也不会刷新。 我应该如何从randomNumbers bean接收新值?例如,我想在'actualNumber'改变时或每5秒钟获得新信息。

1 个答案:

答案 0 :(得分:1)

当用户看到JSP页面的输出时,他们只是看到从页面生成的HTML。为了使其动态化,浏览器必须“知道”才能获得新值。

例如,您的页面上可能有一些javascript,它会不断刷新整个页面。你可以这样做:

<head>
<script type="text/JavaScript">
function timedRefresh() {   
  setTimeout("location.reload(true);",2000); 
}
</script>
</head>
<body onload="JavaScript:timedRefresh(5000);">
...

您的下一个问题是:如何获取更新后的价值?您的背景过程可以简单地将新值更新为会话变量。然后,页面可以始终从该会话变量中获取值。

这可能会引发更多问题,但我希望它能让你走上正确的道路。