0

server time在一个jsp页面上显示,为了显示正确的时间,我必须调用该页面来刷新显示的时间,jsp这会导致很多.requestsserver

谁能建议我在不经常jsp发送的情况下在页面上显示服务器时间的方式有任何改进?request

function displayserver(){
    $.post("DisplayServerTime.jsp","",function(data,status, req){
         $("#DisplayTimeSection").text(req.responseText.trim());
    });
}

$(function(){
setInterval(
function(){
    displayserver();
}
, 30000);
});
4

6 回答 6

1

首次加载页面时获取服务器时间,然后找出客户端时间与服务器时间的时间差。

其次,循环运行一个函数(使用 setInterval())。在每次调用时获取客户端时间并添加您在第一步中获得的时差,然后显示它。

您需要每秒运行两次间隔函数,以确保您不会跳过几秒钟。

于 2013-10-22T10:28:15.560 回答
0

这很容易做到。只需向客户端发送server time并添加一个setInterval获取时间的客户端,以 1 秒为单位递增,然后将时间设置回页面中。

请注意,如果您想要,您可以像在 JS 中client time一样轻松地获得时间并应用。new Date()setInterval

于 2013-10-22T10:26:26.620 回答
0

这里的想法是在调用 displayserver 方法时每五次调用一次 time.jsp。对于未调用 time.jsp 的其他 4 次,我们更新 javascript Date 对象并显示它。

<script type="text/javascript">
var jsVar=0;
var d = new Date();
var timeInterval = 3000;

var doPost=true;
var postCount=0;


function displayserver(){
    if(doPost && postCount == 0){
        $.post("time.jsp","")
         .done(function(msg){
            jsVar = msg;
            doPost = false;
        });
    }else{
        postCount++;
        jsVar = d.getTime() + timeInterval;
        if(postCount == 4){
            postCount=0;
            doPost = true;
        }
    }
    d.setTime(jsVar);
    $("#DisplayTimeSection").text(d);
}

$(function(){
setInterval(
function(){
    displayserver();
}
, timeInterval);
});

</script>
于 2013-10-22T11:58:02.283 回答
0

无需频繁发送请求。

在加载页面时,获取服务器时间很长并Date(millis) 使用Javascript.

然后使用setInterval()1 秒并显示。

在你 Jsp

var jsVar=  <% dateMillis %>;   // server millis

和 javascript 日期形成

var d = new Date();
d.setTime(jsVar);   // server millis ex :1332403882588

然后在JS中显示

var x = document.getElementById("timelable");
x.innerHTML=d.getMilliseconds(); // Modify as per your format

然后

window.setInterval(Yourfunction,milliseconds);

然后在您的毫秒中Yourfunction 添加1 秒并刷新lable

于 2013-10-22T10:24:50.373 回答
0

第 1 步:request.getAttribute("serverDate");使用或获取页面上的服务器 Date 对象session.getAttribute("serverDate");

第 2 步: 根据第 1 步中收到的日期创建一个 javascript 对象

第 3 步:添加一个客户端setInterval,它将Step2对象增加 1 秒,并在页面中设置时间。

于 2013-10-22T10:30:25.503 回答
0

在要显示服务器时间的地方添加标签

<strong>Server Time&nbsp;:&nbsp;&nbsp;</strong><label id="timelable"></label>

然后在body标签里面的jsp末尾添加如下java脚本代码

<script type="text/javascript">
        var myVar = setInterval(function(){ myTimer() }, 1000);
        var jsVar=  <%=java.util.Calendar.getInstance().getTimeInMillis()%>;
        var timeZoneOffset=<%=java.util.TimeZone.getDefault().getOffset(System.currentTimeMillis())%>;

        jsVar=jsVar+timeZoneOffset;
        function myTimer() {
        jsVar=jsVar+1000;
        var d = new Date(jsVar);
        var t=d.toUTCString();
    document.getElementById("timelable").innerHTML = t;
}

        </script>

现在就是这样,您将看到在您的 jsp 中运行的服务器时间。

于 2015-05-05T12:20:13.343 回答