微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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);
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐