javaWeb 系统维护更新提醒!

来源:互联网 发布:悉尼出租车软件 编辑:程序博客网 时间:2024/05/29 02:25
 2013/5/3 15:52   By   Leo


1. 设置时间页面  (setTime.htm)[有日历Calendar插件]  
<!DOCTYPE html><html>  <head>    <title>设置系统维护时间</title>    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">    <meta http-equiv="description" content="this is my page">    <meta http-equiv="content-type" content="text/html; charset=UTF-8">        <!--<link rel="stylesheet" type="text/css" href="./styles.css">--><script src="../js/calendar/WdatePicker.js" type="text/javascript"/></script>  </head>    <body>  <form name="form1" action="/serverTime.do?action=addServerTiem" method="post">     <div align="center">          维护时间:      <input type="text" class="text" id="time" name="time" onClick="WdatePicker({skin:'whyGreen',dateFmt:'yyyy-MM-dd HH:mm:ss'})" value="" /><br/>     提醒内容:<input type="text" id = "content" name="content" value="系统将进行维护,请用户保存好数据!" /><br>     提醒时间:<select id="preTime" name = "preTime">     <option value="5" selected="selected">5分钟</option>     <option value="10">10分钟</option>     <option value="15">15分钟</option>      </select> <br><br>      <input type="submit" vlaue = "设置"/>      <input type="reset"  vlaue = " 重置   "/>     </div>     </from>  </body></html>


2.主要的servlet,设置的时间保存在全局参数application里面,也可以根据需要持久化到数据库中,或是properties文件中。。。
 文件名:ServerTimesServlet.java

package cn.qtone.xxt.mh.admin.notice.servlet;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletContext;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class ServerTimesServlet extends HttpServlet {/** * Constructor of the object. */public ServerTimesServlet() {super();}public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doPost(request, response);}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {request.setCharacterEncoding("utf-8");response.setContentType("text/html;charset=utf-8");String action = request.getParameter("action");if ("addServerTiem".equals(action)) {setTime(request, response);} else if ("getServerTime".equals(action)) {getServerTime(request, response);}}/** * 获取系统维护时间 *  * @param request * @param response */private String getServerTime(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {System.out.println("*************获取系统维护的时间***************");ServletContext application = getServletContext();String reString = "";// 获取设置的系统维护时间String time = (String) application.getAttribute("serverTime");if (time != null && !time.equals("")) {time = (String) application.getAttribute("serverTime");String preTime = (String) application.getAttribute("preTime");System.out.println("设置的时间是:" + time);reString = time + "|" + preTime;response.setContentType("text/html;charset=gbk");PrintWriter out = response.getWriter();out.print(reString);out.flush();out.close();return reString;} else {return null;}}/** * 设置系统维护时间 *  * @param request * @param response * @throws ServletException * @throws IOException */private void setTime(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {request.setCharacterEncoding("utf-8");response.setContentType("text/html;charset=utf-8");// 获取设置的时间String time = request.getParameter("time"); // 系统更新时间String preTime = request.getParameter("preTime"); // 提前的时间// String content = "温馨提示:系统将在"+preTime+"分钟后进行维护,请及时保存你的文件!";System.out.println("*******时间:" + time + "  提前时间:" + preTime+ "*******");try {// 添加系统维护信息设置成系统全局参数ServletContext application = getServletContext();application.setAttribute("serverTime", time);application.setAttribute("preTime", preTime);} catch (Exception e) {e.printStackTrace();}}}



3.在web.xml配置文件中添加:
<servlet>    <servlet-name>ServerTimesServlet</servlet-name>    <servlet-class>cn.qtone.xxt.mh.admin.notice.servlet.ServerTimesServlet</servlet-class></servlet><servlet-mapping>    <servlet-name>ServerTimesServlet</servlet-name>    <url-pattern>/serverTime.do</url-pattern></servlet-mapping>

4.使用ajax异步请求 【index.js】
源码 :

//定时发出请求,ajax原生//创建httpRequestvar request;function createRequest() {try {request = new XMLHttpRequest();} catch (trymicrosoft) {try {request = new ActiveXObject("Msxml2.XMLHTTP");} catch (othermicrosoft) {try {request = new ActiveXObject("Microsoft.XMLHTTP");} catch (failed) {request = false;}}}}function getServerTime() {// 获得xmlhttprequestcreateRequest();var url = "serverTime.do?action=getServerTime"; // 请求的URLrequest.open("POST", url, true);request.onreadystatechange = updatePage;/* 设置回调方法 */request.send(null); /* send中可以发送参数,也可以使用url中的参数传递方式 */}// 处理返回的数据function updatePage() {if (request.readyState == 4) /* 注意HTTP的5中就绪状态4.表示响应已完成,可以访问服务器响应并使用它。 */if (request.status == 200) {/* 检查 HTTP 状态。我们期望的状态码是 200,它表示一切顺利 */var response = request.responseText.split("|");// 获取返回的数据var timeString = response[0];// 设置的时间var preTime = response[1];// 提前的时间//设置的服务器时间格式:2013-05-03 09:22:00var date = timeString.substring(0,10).split("-");//日期var time = timeString.substring(10,19).split(":"); //时间var serverDate = new Date(date);//现在的时间var nowDate = new Date();var year = nowDate.getFullYear().toString(); //4位年份 date[0]var month = (nowDate.getMonth()+1).toString(); //月份 date[1]if(month < 10){ //补0month ="0"+month;}var day = nowDate.getDate().toString(); //日 date[2]if(day < 10){ //补0day = "0"+day;}//比较日期if(year == date[0] && month == date[1] && day == date[2]){var hour = nowDate.getHours().toString();if(hour < 10){  // 补0hour = "0"+hour;}var minute = nowDate.getMinutes();var serverHour = parseInt(time[0])+""; var serverMinute = parseInt(time[1]);var tempMinute = serverMinute - minute;//比较时间if( hour == serverHour && tempMinute <= parseInt(preTime) && tempMinute > 0){alert("亲爱的用户,系统将在"+tempMinute+"分钟后进行维护,请及时保存您的资料!");if(tempMinute > 0){delayCheck();}}else {delayCheck();}}} else if (request.status == 404)alert("Request URL does not exist");elsealert("服务器暂时维护,请稍后再试!");}// 发起请求getServerTime();// 延时请求function delayCheck() {setTimeout("getServerTime()", 60000); // 单位毫秒,一分钟监听一次}



5.在要进行提醒的主框架页面上添加index.js的链接

<script src="../js/index.js" type="text/javascript"/></script>










原创粉丝点击