我在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);
});
答案 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 : </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中运行。