后台dom拼接xml,动态显示统计图

这个东西让我好生头疼,贴代码吧

// 两秒后模拟点击
setTimeout(function() {
// IE
if(document.all) {
document.getElementById("userQuery").click();
}// 其它浏览器
else {
var e = document.createEvent("MouseEvents");
e.initEvent("click", true, true);
document.getElementById("userQuery").dispatchEvent(e);
}
}, 1000);
$("#userQuery").click(function(){
var $this = $(this);
var companyCode=GetRequest()[‘companyCode‘];
$("#compAny").val(companyCode);
//将queryStr传到后台,进行获取数据
var queryStr = $this.parents(‘form‘).serialize();
$.ajax({
url: "../../userliebiao/userGraph.do",
data: queryStr,
type: "post",
cache:false,
dataType: "json",
success: function (data) {
var myChart;
myChart = new FusionCharts("../../fusionCharts/Line.swf","myChartId", "1200", "400", "0" );
myChart.setDataXML(data.xml); //调用后台的xml数据
myChart.render("userPic"); //将数据送给div 进行显示},//如果后台有错
error: function(XMLHttpRequest, textStatus, errorThrown) {
console.log(XMLHttpRequest.status); //一切正常 200
alert(XMLHttpRequest.status);
console.log(XMLHttpRequest.readyState);
//此阶段确认全部数据都已经解析为客户端可用的格式,解析已经完成。值为4表示数据解析完毕,可以通过XMLHttpRequest对象的相应属性取得数据。
alert(XMLHttpRequest.readyState);
console.log(textStatus);
alert("出错了"+textStatus);}}); });

后台方法:

try {
String subcaption = null;
User user=new User();
String type=this.getParam("cycle");
if (type.equals("1")) {
type="1,2"; //1:按天
user.setDmType(type);
}else if(type.equals("2")){
type="4,2"; //1:按月
user.setDmType(type);
}else if(type.equals("3")){
type="8,3"; //1:按年"minZu"
user.setDmType(type);
}
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String allTime=this.getParam("fcreatetime2");
String compAny=this.getParam("compAny");
Map<String, Object> map = new HashMap<String, Object>();
if (allTime!=null || allTime!="") {
String[] a=allTime.split(" 至 "); //将时间分割为开始时间~结束时间
String betime=a[0];
String entime=a[1];
subcaption=betime+" 至 "+entime;
Date time1 = sdf.parse(betime);
Date time2 = sdf.parse(entime);
if (type!=""||compAny!="") {
user.setDmType(type);
user.setCompanyCode(compAny);
}
map.put("dmType",user.getDmType()); //将数据存到map,作为sql方法的参数
map.put("companycode",user.getCompanyCode());
map.put("beginTime",time1);
map.put("overTime", time2);
}
List<Map> aa = los.userGraph(map);//执行sql语句
Document document = DocumentHelper.createDocument();//创建dom节点
// if(!"3".equals(map.get("querytype").toString())){//如果不是按地区查询
// String yAxisMaxValue="50000"; //y轴最大值
String xAxisName="注册日期";
String yAxisName="注册人数";
String numberSuffix="人"; //数字的后缀
String xlable;

String title = "登录人次统计";
Element root = XmlDom4jUtils.addElementAndAttribute(document, "chart",
"caption","注册人数统计 ","xAxisName","注册日期 ","yAxisName","注册人数",
"yAxisMinValue","200","showValues","","alternateHGridColor",
"FCB541","alternateHGridAlpha","20","divLineColor","FCB541","divLineAlpha","50",
"canvasBorderColor","666666","baseFontColor","666666","lineColor","FCB541",
"baseFont","Arial","baseFontSize","15","rotateYAxisName","0",
"chartRightMargin","50","showBorder","0",
"canvasBorderThickness ","1","showNames","",
"numDivLines ","4",
"numberSuffix",numberSuffix,
// "xAxisName",xAxisName,
"subcaption",subcaption+" ",
"showAlternateHGridColor","1",
"canvasBorderColor","FFCCCC",
"bgColor","FFFFFF,FFFFFF",
"anchorRadius","2",//折线节点半径
"bgColor","FFFFFF"
);
String ss;
for (Map map2 : aa) {
ss=(String) map2.get("CREATEDDATE");
boolean a = ss.contains("月");
if (a!=true) {
if (type.equals("1,2")) {
ss+="日";
}
if (type.equals("4,2")) {
ss+="月";
}
if (type.equals("8,3")) {
ss+="年";
}
}
map2.put("CREATEDDATE", ss);
XmlDom4jUtils.addChildrenAndAttribute(root,"set","label",""+map2.get("CREATEDDATE")+"","value",""+map2.get("VISITORID")+"");
}

Element styles = XmlDom4jUtils.addChildren(root, "styles");
Element definition = XmlDom4jUtils.addChildren(styles,"definition");
XmlDom4jUtils.addChildrenAndAttribute(definition,"style","name","Anim1","type","animation","param","_xscale","start","0","duration","1");
XmlDom4jUtils.addChildrenAndAttribute(definition,"style","name","Anim2","type","animation","param","_alpha","start","0","duration","0.6");
Element application = XmlDom4jUtils.addChildren(styles,"application");
XmlDom4jUtils.addChildrenAndAttribute(application,"apply","toObject","DIVLINES","styles","Anim1");
XmlDom4jUtils.addChildrenAndAttribute(application,"apply","toObject","HGRID","styles","Anim2");
XmlDom4jUtils.addChildrenAndAttribute(application,"apply","toObject","DATALABELS","styles","DataShadow,Anim2");

Map<String, Object> mapp = new HashMap<String, Object>();
mapp.put("xml", document.asXML());
String json = JsonUtils.mapToJson(mapp);
outStringData(json);
} catch (ParseException e) {
e.printStackTrace();
}

核心是sql语句:

select count(i.createddate) as visitorId,substr(u.createddate,${dmType}) as createddate
from ** u,// i
where u.userinfoids = i.ids
<if test="beginTime !=null and beginTime !=‘‘">
  <![CDATA[
    and substr(u.createddate,0,10) >= #{beginTime}
  ]]>
</if>
<if test="overTime !=null and overTime !=‘‘">  
  <![CDATA[
    and substr(u.createddate,0,10) <= #{overTime}
  ]]>
</if>
<if test="companycode !=null and companycode !=‘‘">
and u.COMPANYCODE = #{companycode}
</if>
<![CDATA[
group by substr(u.createddate, ${dmType})
order by substr(u.createddate, ${dmType}) asc
]]>

dao代码:

//图形统计
public List<Map> **(Map<String, Object> map){
// super.sqlSessionTemplate.selectMap("路径", map);
return super.sqlSessionTemplate.selectList("路径", map);

}

时间: 2024-11-08 22:57:49

后台dom拼接xml,动态显示统计图的相关文章

DOM解析XML

DOM的文档驱动 处理DOM的时候,我们需要读入整个的XML文档,然后在内存中创建DOM树,生成 DOM树上的每个Node对象 优点是:可以对XML文档进行增删改查的复杂操作,可以随时按照节点间的关系访问数据 缺点: 受内存容量限制,不能处理大的文档,由于没有索引机制,处理效率较低 DOM(文档对象模型),为XML文档的解析定义了一组接口,解析器读入整个文档,然后构造一个驻留内存的树结构,然后代码就可以使用DOM接口来 操组整个树结构,其他点如下: 优点:整个文档树都在内存当中,便于操作:支持删

DOM的概念和简单应用:使用DOM解析XML数据

概念:DOM是Document Object Model的简称,即文档数据模型. Oracle公司提供了JAXP(Java API for XML Processing)来解析XML.JAXP会把XML文档转换成一个DOM树,JAXP的三个包都在JDK中. org.w3c.dom;W3C推荐的解析文档的接口 org.xml.sax;使用SAX解析XML文档的接口 javax.xml.parsers;解析器工厂工具 一.使用DOM解析XML文档的步骤 1.创建解析器工厂对象,即DocumentBu

xml语法、DTD约束xml、Schema约束xml、DOM解析xml

今日大纲 1.什么是xml.xml的作用 2.xml的语法 3.DTD约束xml 4.Schema约束xml 5.DOM解析xml 1.什么是xml.xml的作用 1.1.xml介绍 在前面学习的html语言,html是超文本标记语言,使用html语言规定好的标签来封装文本数据.而html使用的标签html语言规定好的,每个标签都有自己特定的功能. xml语言,可扩展的标记语言,这门语言它没有定义任何的标记,而标记是由使用者自己来定义,但是由于标签名称以及属性名称都由用户自己来命名,导致别人在使

AJAX基础(四)——DOM与xml及xpath

Javascript中装载XML文档 装载同域的XML文件 装载一段表示XML的字符串 装载的js代码 function loadXML(flag,xmldoc){ if(window.ActiveXObject){ //IE浏览器 var activexName=["MSXML2.DOMDocument","Miscrosoft.XmlDom"]; var xmlObj; for(var i=0;i<activexName.length;i++){ try{

Java从零开始学四十二(DOM解析XML)

一.DOM解析XML xml文件 favorite.xml <?xml version="1.0" encoding="UTF-8" standalone="no"?> <PhoneInfo name="手机品牌"> <Brand name="华为"> <Type name="U8650"> </Type> </Brand

org.w3c.dom(java dom)解析XML文档

位于org.w3c.dom操作XML会比较简单,就是将XML看做是一颗树,DOM就是对这颗树的一个数据结构的描述,但对大型XML文件效果可能会不理想 首先来了解点Java DOM 的 API:1.解析器工厂类:DocumentBuilderFactory 创建的方法:DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 2.解析器:DocumentBuilder 创建方法:通过解析器工厂类来获得 DocumentBu

ajax——dom对xml和html的操作

上篇文章说到了dom的基础,dom能够操作xml和html,这次主要写利用dom的api去如何去操作xml和html文档. dom操作xml dom操作xml文档之前必须把xml文档装载到xml dom对象,因此须要两个步骤1.利用javascript装载xml文档.2.dom来操作装载后的xml文档. 利用javascript装载xml文档也能够分为:1.装载同域的xml文件.2.装载一段表示xml字符串. /* * 封装IE和firefox类浏览器中装载同域xml文件和xml字符串的方法,返

Android之DOM解析XML

一.DOM解析方法介绍 DOM是基于树形结构的节点或信息片段的集合,允许开发人员使用DOM API遍历XML树,检索所需数据.分析该结构通常需要加载整个文档和构造树形结构,然后才可以检索和更新节点信息. Android完全支持DOM解析.利用DOM中的对象可以对XML文档进行读取.搜索.修改.添加和删除等操作. DOM的工作原理:使用DOM对XML文件进行操作时,首先要解析文件,将文件分为独立的元素.树形和注释等,然后以节点树的形式在内存中对XML文件进行表示,就可以通过节点树访问文档的内容,并

后台读取applicationContext.xml引发的奇葩问题

SpringMVC整合ibatis时,写了一个测试方法,运行正常,当运行另一个方法时报找不到对应的路径.此处无法理解,为什么同样规则的请求,第一次能够拦截第二次却提示找不到对应的处理方法. 后来将添加的第二个方法逐一注释掉,才发现在Dao层中读取applicationContext.xml时,为了让dao层的各方法共用一个applicationContext.xml,我将读取它的代码提取了出来,作为成员变量 处理了.后将每个dao方法添加同样的读取代码后,程序正常运行.添加代码如下: Appli