请看以下步骤和示例。
请看以下步骤和示例。
步骤1:创建jsp页面
首先,需要创建一个jsp页面来显示倒计时的效果。在该页面中,我们需要先声明引入Javascript和JQuery库。
<%@ page language="java" contentType="text/html;charset=UTF-8" %>
<html>
<head>
<title>倒计时</title>
<script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script>
<script type="text/javascript">
$(function(){
setInterval("getServerTime()",1000); //每隔1秒钟调用getServerTime方法
});
function getServerTime(){
$.get("getCurrentTime.jsp",function(result){ //向服务器请求数据
if(result){
var serverTime = new Date(result); //将字符串转换为时间对象
var now = new Date(); //获取当前客户端时间
var diff = serverTime.getTime() - now.getTime(); //计算时间差
var hour = Math.floor(diff/(1000*60*60));
var minute = Math.floor((diff - hour*1000*60*60)/(1000*60));
var second = Math.floor((diff - hour*1000*60*60 - minute*1000*60)/1000);
$("#showTime").html(hour + "小时" + minute + "分钟" + second + "秒") //更新倒计时
}
});
}
</script>
</head>
<body>
<div>距离活动开始还有:</div>
<div id="showTime"></div>
</body>
</html>
步骤2:创建当前时间获取页面getCurrentTime.jsp
在JSP页面中我们需要获取当前服务器的时间,因此我们需要新建一个jsp文件获取服务器时间,并将其返回给客户端。
<%@ page language="java" contentType="text/html;charset=UTF-8" %>
<%
request.setCharacterEncoding("UTF-8"); //设置字符编码
response.setCharacterEncoding("UTF-8"); //设置字符编码
response.setHeader("Cache-Control","no-cache"); //取消缓存
response.setHeader("Pragma","no-cache");
response.setDateHeader("Expires", 0);
out.print(new java.util.Date().toString()); //返回服务器时间
%>
示例1:JS中通过Ajax来获取服务器时间作为倒计时的开始时间
在JS中通过Ajax来获取服务器时间并将其作为倒计时的开始时间,代码如下:
<html>
<head>
<title>Ajax获取服务器时间倒计时</title>
<script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script>
<script type="text/javascript">
var startTime;
var timeDiff;
$(function(){
$.get("getCurrentTime.jsp",function(result){ //获取服务器时间
startTime = new Date(result);
setInterval("showTime()",1000); //每秒钟刷新倒计时
});
});
function showTime(){
var now = new Date(); //获取客户端时间
timeDiff = startTime.getTime()-now.getTime(); //计算时间差
if(timeDiff<=0){ //如果时间差小于等于0,说明倒计时结束
$("#showTime").html("倒计时结束!");
}else{ //否则继续倒计时
var hour = Math.floor(timeDiff/(1000*60*60));
var minute = Math.floor((timeDiff-hour*1000*60*60)/(1000*60));
var second = Math.floor((timeDiff-hour*1000*60*60-minute*1000*60)/1000);
$("#showTime").html(hour + "小时" + minute + "分钟" + second + "秒");
}
}
</script>
</head>
<body>
<div>距离活动开始还有:</div>
<div id="showTime"></div>
</body>
</html>
示例2:通过JSTL获取服务器时间作为倒计时的开始时间
在JSP页面中,我们可以使用JSTL标签库来获取服务器时间,并将其作为倒计时的开始时间。代码如下:
<%@ page language="java" contentType="text/html;charset=UTF-8" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<html>
<head>
<title>倒计时</title>
<script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script>
<script type="text/javascript">
var startTime;
var timeDiff;
$(function(){
var dateStr = "${fn:replace(fn:replace(fn:replace(fn:replace(fn:replace(fn:replace(fn:trim(fn:substring(fn:trim(fn:replace(fn:trim(fn:replace(fn:trim(fn:replace(fn:trim(fn:replace(fn:trim(fn:replace(fn:trim(fn:replace(fn:replace(fn:replace(fn:replace(fn:trim(fn:replace(fn:replace("${now}", "January", "一月"), "February", "二月"), "March", "三月"), "April", "四月"), "May", "五月"), "June", "六月"), "July", "七月"), "August", "八月"), "September", "九月"), "October", "十月"), "November", "十一月"), "December", "十二月"), "Mon", ""), "Tue", ""), "Wed", ""), "Thu", ""), "Fri", ""), "Sat", ""), "Sun", "")}";
startTime = new Date(dateStr);
setInterval("showTime()",1000); //每秒钟刷新倒计时
});
function showTime(){
var now = new Date(); //获取客户端时间
timeDiff = Math.floor((startTime.getTime()-now.getTime())/1000); //计算时间差
if(timeDiff<=0){ //如果时间差小于等于0,说明倒计时结束
$("#showTime").html("倒计时结束!");
}else{ //否则继续倒计时
var hour = Math.floor(timeDiff/(60*60));
var minute = Math.floor((timeDiff-hour*60*60)/60);
var second = Math.floor((timeDiff-hour*60*60-minute*60));
$("#showTime").html(hour + "小时" + minute + "分钟" + second + "秒");
}
}
</script>
</head>
<body>
<fmt:formatDate value="${now}" pattern="yyyy-MM-dd HH:mm:ss" var="now"/> <!--使用JSTL标签库来获取服务器时间-->
<div>距离活动开始还有:</div>
<div id="showTime"></div>
</body>
</html>
这就是“JSP获取服务器时间以倒计时的形式在页面显示”的完整攻略,希望能对你有所帮助。
沃梦达教程
本文标题为:JSP获取服务器时间以倒计时的形式在页面显示
基础教程推荐
猜你喜欢
- jsp导出excel并支持分sheet导出的方法 2023-08-03
- 一文了解mybatis的延迟加载 2023-03-06
- SpringBoot自动配置实现的详细步骤 2022-11-20
- 一文教你利用Stream API批量Mock数据的方法 2023-05-13
- SpringBoot参数校验之@Validated的使用详解 2023-02-05
- Spring源码解析后置处理器梳理总结 2023-02-19
- MyBatis中的ResultMap的association和collection标签详解 2023-06-10
- SpringBoot应用监控带邮件警报的实现示例 2022-10-30
- 关于Mybatis与JPA的优缺点说明 2022-12-16
- Spring boot详解缓存redis实现定时过期方法 2023-02-28