在jsp页面上显示服务器时间

时间:2013-10-22 10:22:14

标签: java jsp datetime

我在server time页面上显示jsp,为了显示正确的时间,我必须调用jsp页面来刷新显示的时间,这会导致很多requests 1}}到server

有人建议我在jsp页面上显示服务器时间而不经常发送request的方式有任何改进吗?

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

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

6 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

  

不经常发送请求。

加载页面时,请长时间获取服务器时间并创建Date(millis) Object with 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秒到您的millis并刷新lable

答案 2 :(得分:0)

这可以很容易地完成。只需向客户端发送server time并添加一个客户端setInterval即可获得时间,增加1秒并将时间设置回页面。

请注意,如果您想要client time,您可以像JS中的new Date()一样轻松,也可以应用setInterval

答案 3 :(得分:0)

第1步:使用request.getAttribute("serverDate");session.getAttribute("serverDate");

获取网页上的服务器日期对象

第2步:从步骤1中收到的日期创建javascript对象

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

答案 4 :(得分: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>

答案 5 :(得分: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中运行。