底层和业务层都已经写好了。
现在我用的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>
现在我用的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>
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 {
// 设置返回结果字符编码类型
response.setContentType("text/html;charset=UTF-8");
response.setHeader("Cache-Control","no-cache");
// 获取返回结果集
infoList = informationService.getInformationList();
// 创建返回结果框架
JSONArray jsonArray = new JSONArray();
JSONObject jsonObject = new JSONObject();
// 构建返回结果框架内容
for (Information info : infoList) {
jsonObject.put("GameType", info.getGameType());
jsonObject.put("Date", info.getDate());
jsonObject.put("AlarmType", info.getAlarmType());
jsonObject.put("Ip", info.getIp());
jsonObject.put("Srv_id", info.getSrv_id());
jsonObject.put("Srv_name", info.getSrv_name());
jsonObject.put("AlarmMessage", info.getAlarmMessage());
jsonObject.put("Contact", info.getContact());
jsonObject.put("Tel", info.getTel());
jsonArray.add(jsonObject);
}
// 格式化返回结果集
String information_list = JSONSerializer.toJSON(jsonArray).toString();
// 输出结果集
response.getWriter().write(information_list);
response.getWriter().flush();
response.getWriter().close();
}
现在我servlet写成这样了,前台用ajax写的时候不知道为什么打印不出来。
function getInformation(){
$.ajax({
type : 'get',
url : 'information',
datatype: 'json',
success:function(data){
var items = data;
for(var i = 0;i<=items.length;i++){
var item = items[i];
alert(item.GameType);
}
}
});
}弹不出东西出来。。
那个传说叫quartz,我知道有这个东西。
只是现在这个demo不需要框架,简单的用servlet就好。
用框架了底层还要改很多东西。
这个我在web.xml里面配置的是一个servlet的地址。
附上web.xml<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<servlet> <servlet-name>InformationServlet</servlet-name>
<servlet-class>servlet.InformationServlet</servlet-class>
</servlet> <servlet-mapping>
<servlet-name>InformationServlet</servlet-name>
<url-pattern>/information</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
function getInformation(){ $.ajax({
type : 'post',
url : 'information',
datatype: 'json',
success:function(data){
var items = data.split(",");
for(var i = 0;i<=items.length;i++){
var item = items[i];
}
}
});
}
不知道为什么
[{"GameType":"aaaaa","Date":"2012-01-16"}]
但是我在循环里面写alert(item.GameType);
这样弹不出来
for(var o in data){
alert(o);
alert(data[o]);
alert("text:"+data[o].GameType+" value:"+data[o].Date);
}
是因为没有eval的结果,另外不需要分割字符串。
然后按照上面我循环遍历的方式,就直接可以item.属性了。
散分了