index.jsp
上传用户:shjgzm
上传日期:2017-08-31
资源大小:2757k
文件大小:6k
源码类别:

Ajax

开发平台:

Java

  1. <%@ page contentType="text/html; charset=UTF-8"%>
  2. <%@ page language="java"%>
  3. <%@ page import="java.sql.*,ajax.db.DBUtils"%>
  4. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  5. <html>
  6. <head>
  7. <meta http-equiv="Content-type" content="text/html; charset=utf-8">
  8. <title>服务器监测系统</title>
  9. <style type="text/css">
  10. /* 页面字体样式 */
  11. body, td, input, textarea {
  12.     font-family:Arial;
  13.     font-size:12px;
  14. }
  15. /* 表格基本样式 */
  16. table.default {
  17.     border-collapse:collapse;
  18.     border:1px solid black;
  19.     width:700px;
  20. }
  21. /* 表格单元格样式 */
  22. table.default td {
  23.     border:1px solid black;
  24.     padding:3px;
  25. }
  26. /* 列头样式 */
  27. table.default td.item {
  28.     background:#006699;
  29.     color:#fff;
  30.     text-align:center;
  31.     height:25px;
  32. }
  33. /* 检查正常样式 */
  34. span.ok {
  35.     background:#006600;
  36.     padding:3px;
  37.     color:#FFFFFF;
  38. }
  39. /* 检查错误样式 */
  40. span.error {
  41.     background:#FF0000;
  42.     padding:3px;
  43.     color:#FFFFFF;
  44. }
  45. /* div统一样式 */
  46. div {
  47.     margin:5px;
  48. }
  49. </style>
  50. <script type="text/javascript">
  51. var serverArray = new Array();      //用于保存server信息的数组
  52. var canCheck = false;               //是否可循环检查服务器的标志
  53. //用于创建XMLHttpRequest对象
  54. function createXmlHttp() {
  55.     var xmlHttp;                    //用于保存XMLHttpRequest对象
  56.     //根据window.XMLHttpRequest对象是否存在使用不同的创建方式
  57.     if (window.XMLHttpRequest) {
  58.        xmlHttp = new XMLHttpRequest();                  //FireFox、Opera等浏览器支持的创建方式
  59.     } else {
  60.        xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");//IE浏览器支持的创建方式
  61.     }
  62.     return xmlHttp;
  63. }
  64. //按格式获取当前时间
  65. function getNowTime() {
  66.     var now = new Date();
  67.     var nowDate = now.getFullYear() + "-" + (now.getMonth() + 1) + "-" + now.getDate();
  68.     var nowTime = now.getHours() + ":" + now.getMinutes() + ":" + now.getSeconds();
  69.     return nowDate + " " + nowTime;
  70. }
  71. //测试服务器状态
  72. function checkServer(id, time, url) {
  73.     var xmlHttp = createXmlHttp();                      //创建新的XMLHttpRequest对象
  74.     //编写回调处理函数
  75.     xmlHttp.onreadystatechange = function() {
  76.         if (xmlHttp.readyState == 4) {
  77.             //将检查时间写入页面
  78.             document.getElementById("lastchecktime" + id).innerHTML = getNowTime();
  79.             var result = xmlHttp.responseText;          //获取服务器响应
  80.             //如果检查结果不包含error(表示正常)且canCheck为true时继续检查
  81.             if (result.indexOf("error") == -1 && canCheck) {
  82.                 //在设置好的时间间隔后再次检查服务器
  83.                 setTimeout("checkServer('" + id + "'," + time + ",'" + url + "')", time);
  84.             }
  85.             document.getElementById("checkresult" + id).innerHTML = result; //将结果写入页面
  86.         }
  87.     };
  88.     xmlHttp.open("POST", "server_monitor.jsp", true);
  89.     xmlHttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
  90.     xmlHttp.send("url=" + encodeURIComponent(url) + 
  91.                  "&timestamp=" + new Date().getTime());//发送包含URL参数的请求体
  92. }
  93. //注册服务器地址到数组中
  94. function regUrl(id, time, url) {
  95.     serverArray.push(eval("({id:'" + id + "',time:" + time + ",url:'" + url + "'})"));
  96. }
  97. //进入检查状态
  98. function startCheck() {
  99.     canCheck = true;                                            //设置检查标记为true
  100.     document.getElementById("status").innerHTML = "正在检查";   //改写状态文本
  101.     //循环读取server数组中的服务器信息,按照每个服务器设定的时间调用checkServer函数
  102.     for (var i=0; i<serverArray.length; i++) {
  103.         var obj = serverArray[i];
  104.         setTimeout("checkServer('" + obj.id + "'," + obj.time + ",'" + obj.url + "')", obj.time);
  105.     }
  106. }
  107. //停止检查
  108. function stopCheck() {
  109.     canCheck = false;                                           //设置检查标记为false
  110.     document.getElementById("status").innerHTML = "停止检查";   //改写状态文本
  111. }
  112. </script>
  113. </head>
  114. <body>
  115. <h1>服务器监测系统</h1>
  116. <div>
  117.     <input type="button" value="开始检查" onclick="startCheck()">
  118.     <input type="button" value="停止检查" onclick="stopCheck()">
  119.     检查状态:<span id="status">停止检查</span>
  120. </div>
  121. <table class="default">
  122. <tr>
  123.     <td class="item" width="10%">服务器名</td>
  124.     <td class="item" width="40%">检测地址</td>
  125.     <td class="item" width="10%">检查间隔</td>
  126.     <td class="item" width="20%">最后检查时间</td>
  127.     <td class="item" width="20%">服务器状态</td>
  128. <%
  129.     String sql = "select * from servers order by id asc";   //定义查询服务器信息的SQL语句
  130.     Connection conn = null;                 //声明Connection对象
  131.     PreparedStatement pstmt = null;         //声明PreparedStatement对象
  132.     ResultSet rs = null;                    //声明ResultSet对象
  133.     try {
  134.         conn = DBUtils.getConnection();     //获取数据库连接
  135.         pstmt = conn.prepareStatement(sql); //根据sql创建PreparedStatement
  136.         rs = pstmt.executeQuery();          //执行查询,返回结果集
  137.         //遍历结果集,显示服务器信息
  138.         while (rs.next()) {
  139.             String id = rs.getString("id");
  140.             String name = rs.getString("name");
  141.             String url = rs.getString("url");
  142.             int time = rs.getInt("checktime");
  143.             %>
  144.             <tr>
  145.                 <td>
  146.                     <script type="text/javascript">
  147.                         //注册当前服务器
  148.                         regUrl('<%=id%>',<%=time%>,'<%=url%>');
  149.                     </script>
  150.                     <%=name%>
  151.                 </td>
  152.                 <td><%=url%></td>
  153.                 <td align="center"><%=time/1000%> 秒</td>
  154.                 <td align="center" id="lastchecktime<%=id%>"></td>
  155.                 <td align="center" id="checkresult<%=id%>"></td>
  156.             </tr>
  157.             <%
  158.         }
  159.     } catch (SQLException e) {
  160.         System.out.println(e.toString());
  161.     } finally {
  162.         DBUtils.close(rs);                  //关闭结果集
  163.         DBUtils.close(pstmt);               //关闭PreparedStatement
  164.         DBUtils.close(conn);                //关闭连接
  165.     }
  166. %>
  167. </table>
  168. </body>
  169. </html>