求教定时查询
底层和业务层都已经写好了。
现在我用的servlet的方式把数据以请求转发的形式发送到jsp页面上。
我想要的操作:
页面定时可以 异步 调用servlet获取数据,然后在从servlet返回到原jsp页面。
如果查询出来的是新数据,则用jquery动态添加tr的方式,添加到table首部。
package dao;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.util.ArrayList;import java.util.List;import util.DBManager;import entity.Information;public class InformationDao { private Connection con = null; private PreparedStatement pst = null; private ResultSet rs = null; // 查询当天所有gtalk报警信息 public List<Information> queryAll() { // 按方法所需拼写T-SQL语句 String sql = "SELECT gtalk_alarm.Game_Type,gtalk_alarm.`DATE`,gtalk_alarm.Alarm_Type,gtalk_alarm.IP,gtalk_alarm.Srv_ID,gtalk_alarm.Srv_Name,gtalk_alarm.Alarm_Message,gtalk_alarm.Contact,gtalk_alarm.Tel " + "FROM gtalk_alarm " + "WHERE TO_DAYS(gtalk_alarm.`DATE`) = TO_DAYS(now()) " + "GROUP BY gtalk_alarm.Game_Type,gtalk_alarm.`DATE`,gtalk_alarm.Alarm_Type,gtalk_alarm.IP,gtalk_alarm.Srv_ID,gtalk_alarm.Srv_Name,gtalk_alarm.Alarm_Message,gtalk_alarm.Contact,gtalk_alarm.Tel " + "ORDER BY gtalk_alarm.`DATE` DESC"; // 创建数据库连接 con = DBManager.getConnection(); try { // 创建数据库操作对象 pst = con.prepareStatement(sql); // 执行数据库操作对象并接受结果集 rs = pst.executeQuery(); // 创建集合 List<Information> infoList = new ArrayList<Information>(); // 遍历结果集 while(rs.next()){ // 实例化信息对象 Information info = new Information(); info.setGameType(rs.getString("gtalk_alarm.Game_Type")); info.setDate(rs.getString("gtalk_alarm.DATE")); info.setAlarmType(rs.getString("gtalk_alarm.Alarm_Type")); info.setIp(rs.getString("gtalk_alarm.IP")); info.setSrv_id(rs.getString("gtalk_alarm.Srv_ID")); info.setSrv_name(rs.getString("gtalk_alarm.Srv_Name")); info.setAlarmMessage(rs.getString("gtalk_alarm.Alarm_Message")); info.setContact(rs.getString("gtalk_alarm.Contact")); info.setTel(rs.getString("gtalk_alarm.Tel")); // 封装对象进集合 infoList.add(info); } return infoList; } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); return null; } finally{ DBManager.close(con,pst,rs); } } // 按集合差值limit查询 public List<Information> queryAll(int limit){ // 按方法所需拼写T-SQL语句 String sql = "SELECT gtalk_alarm.Game_Type,gtalk_alarm.`DATE`,gtalk_alarm.Alarm_Type,gtalk_alarm.IP,gtalk_alarm.Srv_ID,gtalk_alarm.Srv_Name,gtalk_alarm.Alarm_Message,gtalk_alarm.Contact,gtalk_alarm.Tel " + "FROM gtalk_alarm " + "WHERE TO_DAYS(gtalk_alarm.`DATE`) = TO_DAYS(now()) " + "GROUP BY gtalk_alarm.Game_Type,gtalk_alarm.`DATE`,gtalk_alarm.Alarm_Type,gtalk_alarm.IP,gtalk_alarm.Srv_ID,gtalk_alarm.Srv_Name,gtalk_alarm.Alarm_Message,gtalk_alarm.Contact,gtalk_alarm.Tel " + "ORDER BY gtalk_alarm.`DATE` DESC limit"+limit; // 创建数据库连接 con = DBManager.getConnection(); try { // 创建数据库操作对象 pst = con.prepareStatement(sql); // 执行数据库操作对象并接受结果集 rs = pst.executeQuery(); // 创建集合 List<Information> infoList = new ArrayList<Information>(); // 遍历结果集 while(rs.next()){ // 实例化信息对象 Information info = new Information(); info.setGameType(rs.getString("gtalk_alarm.Game_Type")); info.setDate(rs.getString("gtalk_alarm.DATE")); info.setAlarmType(rs.getString("gtalk_alarm.Alarm_Type")); info.setIp(rs.getString("gtalk_alarm.IP")); info.setSrv_id(rs.getString("gtalk_alarm.Srv_ID")); info.setSrv_name(rs.getString("gtalk_alarm.Srv_Name")); info.setAlarmMessage(rs.getString("gtalk_alarm.Alarm_Message")); info.setContact(rs.getString("gtalk_alarm.Contact")); info.setTel(rs.getString("gtalk_alarm.Tel")); // 封装对象进集合 infoList.add(info); } return infoList; } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); return null; } finally{ DBManager.close(con,pst,rs); } } }package servlet;import java.io.IOException;import java.util.ArrayList;import java.util.List;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import service.InformationService;import entity.Information;public class InformationServlet extends HttpServlet { InformationService informationService = new InformationService(); List<Information> infoList = new ArrayList<Information>(); public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request, response); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { infoList = informationService.getInformationList(); request.setAttribute("infoList", infoList); request.getRequestDispatcher("index.jsp").forward(request, response); }}
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%><%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%><% String path = request.getContextPath(); String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> <head> <base href="<%=basePath%>"> <title>My JSP 'index.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <link rel="stylesheet" type="text/css" href="/gtalk/js/jquery/themes/gray/easyui.css"> <link rel="stylesheet" type="text/css" href="/gtalk/js/jquery/themes/icon.css"> <script type="text/javascript" src="/gtalk/js/jquery/jquery-1.4.2.min.js"></script> <script type="text/javascript" src="/gtalk/js/jquery/jquery.easyui.min.js"></script> </head> <style type="text/css"> body { font: normal 11px auto "Trebuchet MS", Verdana, Arial, Helvetica,sans-serif; color: #4f6b72; background: #E6EAE9; } a { color: #c75f3e; } #mytable { width: 100%; padding: 0; margin: 0; vertical-align: center; } caption { padding: 0 0 5px 0; width: 700px; font: italic 11px "Trebuchet MS", Verdana, Arial, Helvetica, sans-serif; text-align: right; } th { font: bold 11px "Trebuchet MS", Verdana, Arial, Helvetica, sans-serif; color: #4f6b72; border-right: 1px solid #C1DAD7; border-bottom: 1px solid #C1DAD7; border-top: 1px solid #C1DAD7; letter-spacing: 2px; text-transform: uppercase; text-align: left; padding: 6px 6px 6px 12px; background: #CAE8EA no-repeat; } th.nobg { border-top: 0; border-left: 0; border-right: 1px solid #C1DAD7; background: none; } td { border-right: 1px solid #C1DAD7; border-bottom: 1px solid #C1DAD7; background: #fff; font-size: 11px; padding: 6px 6px 6px 12px; color: #4f6b72; } td.alt { background: #F5FAFA; color: #797268; } th.spec { border-left: 1px solid #C1DAD7; border-top: 0; background: #fff no-repeat; font: bold 10px "Trebuchet MS", Verdana, Arial, Helvetica, sans-serif; } th.specalt { border-left: 1px solid #C1DAD7; border-top: 0; background: #f5fafa no-repeat; font: bold 10px "Trebuchet MS", Verdana, Arial, Helvetica, sans-serif; color: #797268; } /*---------for IE 5.x bug*/ html>body td { font-size: 11px; } body,td,th { font-family: 宋体, Arial; font-size: 12px; } </style> <script> function checkTime(){ window.location = 'information'; } </script> <body > <table id="mytable" cellspacing="0"> <caption> </caption> <tr> <th scope="col">游戏类型</th> <th scope="col">报警时间</th> <th scope="col">报警类型</th> <th scope="col">IP地址</th> <th scope="col">服务编号</th> <th scope="col">服务名称</th> <th scope="col">报警信息</th> <th scope="col">联系人</th> <th scope="col">联系方式</th> </tr> <c:forEach var="information" items="${infoList}"> <tr> <td class="row">${information.gameType }</td> <td class="row">${information.date }</td> <td class="row">${information.alarmType }</td> <td class="row">${information.ip }</td> <td class="row">${information.srv_id }</td> <td class="row">${information.srv_name }</td> <td class="row">${information.alarmMessage }</td> <td class="row">${information.contact }</td> <td class="row">${information.tel }</td> </tr> </c:forEach> </table> <script> window.setInterval("checkTime()",600000); </script> </body> </html>