java – 如何将数据推送到jsp而不是每2秒请求一次?

前端之家收集整理的这篇文章主要介绍了java – 如何将数据推送到jsp而不是每2秒请求一次?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我想每2秒将数据推送到jsp,而客户端请求它.
我在这里使用Spring with Hibernate.
我正在显示谷歌地图标记,我想通过从数据库获取数据每2秒更新标记位置,但是我已经从数据库获取数据每2秒,但我无法将数据推送到此JSP.

  1. @Scheduled(fixedRate = 2000)
  2. public void getData(){
  3. // TODO Auto-generated method stub
  4. DeviceDetails deviceDetails = realTimeDataDAO.getDeviceDetails(deviceId);
  5. System.out.println(deviceDetails);
  6. }

我必须每2秒显示一些数据.谁能告诉我怎么做?

任何人都知道Comet Ajax Push技术,它会在这种情况下工作吗?

最佳答案
使用Spring最好的办法是将计划查询的结果存储到内存中的bean中,然后让另一个请求范围bean将该结果存储在Web可访问的方法中,并将其作为文本(或JSON)返回.或者,您可以在每次请求更新时查询数据库.

然后,您可以从页面发出定时异步请求(您可能需要使用YUI Connection Manager),阅读响应并使用google.maps.Map中的panTo方法更新地图位置.

如您所见,该解决方案分为Java和JavaScript部分.

对于Java端,您必须创建一个控制器来执行对数据库查询(或者更好,将该任务委托给另一个层)并将结果作为JSON返回,您可以使用http://spring-json.sourceforge.net/.它在Spring中有点复杂,因此您可能希望创建一个返回数据的简单servlet.

对于Javascript方面,一旦有了一个返回JSON数据的工作端点,使用YUI Connection Managergoogle maps api

  1. function update(){
  2. var callback = {
  3. success: function (o) {
  4. var response = YAHOO.lang.JSON.parse(o.responseText);
  5. map.panTo({lat: response.lat,lng: response.longi}); // map is the google.maps.Map representing your map
  6. },failure: function (o) {
  7. }
  8. }
  9. var sUrl = '/getData.htm'; // This is the request mapping for your bean
  10. YAHOO.util.Connect.asyncRequest('GET',sUrl,callback);
  11. }
  12. function init(){
  13. setTimeout("update()",2000);
  14. }

猜你在找的Spring相关文章