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

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

   @Scheduled(fixedrate = 2000)
   public void getData(){
                    // Todo Auto-generated method stub
                    DeviceDetails deviceDetails = realTimeDataDAO.getDeviceDetails(deviceid);
                    System.out.println(deviceDetails);
                }

我必须每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

function update(){
    var callback = {
        success: function (o) {
            var response = YAHOO.lang.JSON.parse(o.responseText);
            map.panTo({lat: response.lat,lng: response.longi}); // map is the google.maps.Map representing your map
        },failure: function (o) {

        }
    }
    var sUrl = '/getData.htm'; // This is the request mapping for your bean
    YAHOO.util.Connect.asyncRequest('GET',sUrl,callback);
}

function init(){
    setTimeout("update()",2000);
}

相关文章

这篇文章主要介绍了spring的事务传播属性REQUIRED_NESTED的原...
今天小编给大家分享的是一文解析spring中事务的传播机制,相...
这篇文章主要介绍了SpringCloudAlibaba和SpringCloud有什么区...
本篇文章和大家了解一下SpringCloud整合XXL-Job的几个步骤。...
本篇文章和大家了解一下Spring延迟初始化会遇到什么问题。有...
这篇文章主要介绍了怎么使用Spring提供的不同缓存注解实现缓...