【问题标题】:Displaying server time on jsp page在jsp页面上显示服务器时间
【发布时间】:2013-10-22 10:22:14
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: java jsp datetime


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

      这很容易做到。只需将server time 发送给客户端并添加一个客户端setInterval 即可获取时间,以1 秒为增量并在页面中重新设置时间。

      注意,如果你想要client time,你可以像JS中的new Date()一样简单地获取时间,也可以应用setInterval

      【讨论】:

      • 感谢 Silviu,我不想要客户时间,因为它可能是错误的。我可以使用 jquery 做到这一点吗?
      • 是的,你可以用 jQuery 做到这一点,但 JS 也可以。您所要做的就是在您的 JSP 中发送服务器时间以获得初始服务器时间。
      【解决方案3】:

      不经常发送请求。

      在加载页面时获取服务器时间并创建一个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 sec 到您的毫秒并刷新 lable

      【讨论】:

      • 他要求的是服务器时间,而不是客户端时间。
      • While loading the page get the time in long,来自服务器
      • 这有点令人困惑。我虽然你也从客户端获得时间。
      • @SilviuBurcea 是的,提到了服务器。
      • 他可能想要日期,而不是毫秒。 x.innerHTML = d; 似乎更好。
      【解决方案4】:

      这里的思路是在调用displayserver方法的时候每五次调用一次time.jsp。对于其他 4 次 time.jsp 没有被调用,我们更新一个 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>
      

      【讨论】:

      • time.jsp 将每 15 秒调用一次,时间更新将每 3 秒发生一次。
      【解决方案5】:

      在你想显示服务器时间的地方添加一个标签

      <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 中运行的服务器时间。

      【讨论】:

        【解决方案6】:

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

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

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

        【讨论】:

        • 您不应依赖 setInterval 以必要的准确性调用您的更新函数这一事实。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-04-06
        • 1970-01-01
        • 2014-04-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多