第一步:引入文件,具体下载的地址网上很多,这里不在罗嗦。
<link href="themes/ui.jqgrid.css" rel="stylesheet" type="text/css" />
<link href="themes/redmond/jquery-ui-1.7.1.custom.css" rel="stylesheet" type="text/css" />
<script src="js/jquery.js" type="text/javascript"> </script>
<script src="js/jquery-ui-1.7.1.custom.min.js" type="text/javascript"> </script>
<script src="js/i18n/grid.locale-en.js" type="text/javascript"></script>
<script src="js/jquery.jqGrid.min.js" type="text/javascript"> </script>
第二步:编写前台
<table id="alertsTable"></table>
<script type="text/javascript">
$(function(){
jQuery("#alertsTable").jqGrid({
url: 'GetAlertsServlet?time=<%=time %>', <!--time为request接收传递的参数 -->
datatype: "xml",
colNames:["告警序列号","子系统", "告警级别", "最近发生时间"," 告警分组","告警关键字","告警摘要","中文参考","告警节点","IP地址","重复次数","短信通知人","应用名称"],
colModel:[
{name:"Serial",index:"Serial", width:100,align:"center",xmlmap:"ItemAttributes>Serial"},
{name:"Agent",index:"Agent", width:80,align:"center",xmlmap:"ItemAttributes>Agent"},
{name:"Severity",index:"Severity", width:85, align:"right",xmlmap:"ItemAttributes>Severity"},
{name:"LastOccurrence",index:"LastOccurrence",align:"left", width:130,xmlmap:"ItemAttributes>LastOccurrence",sorttype:"date"},
{name:"AlertGroup",index:"AlertGroup", width:150, xmlmap:"ItemAttributes>AlertGroup"},
{name:"AlertKey",index:"AlertKey", width:150,xmlmap:"ItemAttributes>AlertKey"},
{name:"Summary",index:"Summary", width:200, align:"right",xmlmap:"ItemAttributes>Summary"},
{name:"CNSummary",index:"CNSummary", width:200,xmlmap:"ItemAttributes>CNSummary"},
{name:"Node",index:"Node", width:100, xmlmap:"ItemAttributes>Node"},
{name:"IPAddress",index:"IPAddress", width:100,xmlmap:"ItemAttributes>IPAddress"},
{name:"Tally",index:"Tally", width:85, align:"right",xmlmap:"ItemAttributes>Tally"},
{name:"SMSContract",index:"SMSContract", width:130,xmlmap:"ItemAttributes>SMSContract"},
{name:"AppName",index:"AppName", width:120, xmlmap:"ItemAttributes>AppName"},
],
height:600,
rowNum:1000,
rowList:[20,50,100],
viewrecords: true,
loadonce: true,
xmlReader: {
root : "Items",
row: "Item",
repeatitems: false,
id: "ASIN"
},
caption: "关联告警"
});
});
</script>
第三步:编写后台代码,我这里后台采用XML的形式
request.setCharacterEncoding("utf-8");
response.setHeader("Pragma", "No-cache");
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expires", 0);
response.setContentType("text/xml; charset=utf-8");
PrintWriter out = response.getWriter();
StringBuffer s = new StringBuffer();
s.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
s.append(" <Books>");
s.append(" <Items>");
s.append(" <Request>");
s.append(" <IsValid>True</IsValid>");
s.append(" <ItemSearchRequest>");
s.append(" <SearchIndex>Books</SearchIndex>");
s.append(" </ItemSearchRequest>");
s.append(" </Request>");
ConnectionDao dao = new ConnectionDao();
List alertList = null;
if(time==null){
alertList = new ArrayList();
}else{
alertList = dao.getAlertsByTime(Long.parseLong(time));
}
for(int i=0;i<alertList.size();i++){
Alert alert = (Alert)alertList.get(i);
s.append(" <Item>");
s.append(" <DetailPageURL></DetailPageURL>");
s.append(" <ItemAttributes>");
s.append(" <Serial>"+alert.getSerial()+"</Serial>");
s.append(" <Agent>"+Deal.toMyString(alert.getAgent())+"</Agent>");
s.append(" <Severity >"+alert.getSeverity()+"</Severity >");
s.append(" <LastOccurrence>"+new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new java.util.Date(alert.getLastOccurrence()*1000))+"</LastOccurrence>");
s.append(" <AlertGroup>"+Deal.toMyString(alert.getAlertGroup())+"</AlertGroup>");
s.append(" <AlertKey>"+Deal.toMyString(alert.getAlertKey())+"</AlertKey>");
s.append(" <Summary>"+Deal.toMyString(alert.getSummary())+"</Summary>");
s.append(" <CNSummary>"+Deal.toMyString(alert.getCnSummary())+"</CNSummary>");
s.append(" <Node>"+Deal.toMyString(alert.getNode())+"</Node>");
s.append(" <IPAddress>"+Deal.toMyString(alert.getIpAddress())+"</IPAddress>");
s.append(" <Tally>"+alert.getTally()+"</Tally>");
s.append(" <SMSContract>"+Deal.toMyString(alert.getSmsContact())+"</SMSContract>");
s.append(" <AppName>"+Deal.toMyString(alert.getAppName())+"</AppName>");
s.append(" </ItemAttributes>");
s.append(" </Item>");
}
s.append(" </Items>");
s.append(" </Books>");
out.println(s.toString());
out.flush();
在生成XML文件的时候,我这里出现一些问题,就是不同浏览器出现的界面效果不同,最后检查原因为生成XML时后缀多出些东西。处理如下:
Deal.java:
public class Deal {
public static String toMyString(String str) {
if(str==null){
return str;
}
str=str.replaceAll("&", "&");
str=str.replaceAll("<", "<");
str=str.replaceAll(">", ">");
str=str.replaceAll("'", "'");
str=str.replaceAll("\"", """);
byte[] mybyte = str.getBytes();
for(int i=0; i<mybyte.length; i++) {
if(mybyte[i] == 0) {
mybyte[i] = 0x20;
}
}
return (new String(mybyte));
}
}
OK,整个简单的demo就这样完成,具体的一些其它高级功能:编辑,删除,添加,查询,分页都可以看到api进行。