采用 ajax + vml 制作一个柱状图报表

本文介绍了一种使用AJAX和VML技术实现实时更新动态柱状图的方法。通过一个简单的Servlet获取随机数据,并利用HTML页面上的AJAX请求将这些数据显示为动态更新的柱状图。

备份一个有意思的小东西:动态柱状图,采用ajax + vml。
vml是微软在IE5中就支持的矢量图技术。采用xml的格式来生成矢量图,这为我们在页面上生成高质量的图像提供了
很好的支持。另:虽然SVG很好,但IE不支持(不安装插件的话)。
程序很简单:
一个servlet:采集数据(仅仅随机产生一个数组)。
一个html页面:采用ajax从servlet得到数据,然后用vml生成图表。由于采用了ajax,页面是不刷新的实时得到数据。

1: servlet:PingServlet.java

packageco.vml.servlet;
importjava.io.IOException;
importjava.io.PrintWriter;

importjavax.servlet.ServletException;
importjavax.servlet.http.HttpServlet;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
/***//**
*
@version1.0
*
@author
*/

publicclassPingServletextendsHttpServlet
...{

/***//**HandlestheHTTP<code>GET</code>method.
*
@paramrequestservletrequest
*
@paramresponseservletresponse
*/

protectedvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException...{
Stringtask
=request.getParameter("task");
StringBufferresBuf
=newStringBuffer();

if(task.equals("poll"))...{
for(inti=0;i<6;i++)
...{
longcounter=Math.round(Math.random()*10)+1;
System.out.println(i
+"--"+counter);
resBuf.append(
"<percent>"+counter+"</percent>");
}


}


PrintWriterout
=response.getWriter();
response.setContentType(
"text/xml");
response.setHeader(
"Cache-Control","no-cache");
out.println(
"<response>");
out.println(resBuf.toString());
out.println(
"</response>");
out.close();
}


/***//**HandlestheHTTP<code>POST</code>method.
*
@paramrequestservletrequest
*
@paramresponseservletresponse
*/

protectedvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException...{
doGet(request,response);
}


/***//**Returnsashortdescriptionoftheservlet.
*/

publicStringgetServletInfo()...{
return"Shortdescription";
}

}

2: html页面(ajax + vml)

<HTMLxmlns:v>
<HEAD>
<METAhttp-equiv="Content-Type"content="text/html;Charset=gb2312">


<STYLE>...
td
{...}{
font-size
:12px
}


body
{...}{
font-size
:12px
}


v:*
{...}{
behavior
:url(#default#VML);
}


</STYLE>

</HEAD>

<script>...
varxmlHttp;
functioncreateXMLHttpRequest()
...{
if(window.ActiveXObject)
...{
xmlHttp
=newActiveXObject("Microsoft.XMLHTTP");
}

elseif(window.XMLHttpRequest)
...{
xmlHttp
=newXMLHttpRequest();
}

}


functiongo()
...{
setTimeout(
"pollServer()",2000);
}



functionpollServer()
...{
createXMLHttpRequest();
varurl="../PingServlet?task=poll";
xmlHttp.open(
"GET",url,true);
xmlHttp.onreadystatechange
=pollCallback;
xmlHttp.send(
null);
}




functionpollCallback()
...{
if(xmlHttp.readyState==4)
...{
if(xmlHttp.status==200)
...{
vararray1=newArray(6);
for(i=0;i<6;i++)
...{
array1[i]
=parseInt(xmlHttp.responseXML.getElementsByTagName("percent")[i].firstChild.data);
}


array2
=newArray(16,14,10,16,5,8);
draw(array1);
setTimeout(
"pollServer()",2000);
}

}

}




functiondraw(array1)
...{
allstr
=array1[0]+array1[1]+array1[2]+array1[3]+array1[4]+array1[5];
varstr="";
for(i=0;i<=5;i++)
...{
mathstr
=Math.round(100/(allstr/array1[i]))
str
=str+"<v:rectfillcolor='lime'style='width:20;color:navy;height:"+
5000/(1000/mathstr)+"'><br>&nbsp;%"+
mathstr
+"<br>"+
array1[i]
+"<v:Extrusionbackdepth='15pt'on='true'/></v:rect>";

}


varmyDraw=document.getElementById("mydiv");
myDraw.innerHTML
=str;
}



</script>

<bodybgcolor=eeeeeestyle='border:0solideeeeee'>
<inputid="go"name="run"type="button"value="run"onClick="go();">
<divwidth="900"id="mydiv">
</div>

</BODY>
</HTML>

基于径向基函数神经网络RBFNN的自适应滑模控制学习(Matlab代码实现)内容概要:本文介绍了基于径向基函数神经网络(RBFNN)的自适应滑模控制方法,并提供了相应的Matlab代码实现。该方法结合了RBF神经网络的非线性逼近能力和滑模控制的强鲁棒性,用于解决复杂系统的控制问题,尤其适用于存在不确定性和外部干扰的动态系统。文中详细阐述了控制算法的设计思路、RBFNN的结构与权重更新机制、滑模面的构建以及自适应律的推导过程,并通过Matlab仿真验证了所提方法的有效性和稳定性。此外,文档还列举了大量相关的科研方向和技术应用,涵盖智能优化算法、机器学习、电力系统、路径规划等多个领域,展示了该技术的广泛应用前景。; 适合人群:具备一定自动控制理论基础和Matlab编程能力的研究生、科研人员及工程技术人员,特别是从事智能控制、非线性系统控制及相关领域的研究人员; 使用场景及目标:①学习和掌握RBF神经网络与滑模控制相结合的自适应控制策略设计方法;②应用于电机控制、机器人轨迹跟踪、电力电子系统等存在模型不确定性或外界扰动的实际控制系统中,提升控制精度与鲁棒性; 阅读建议:建议读者结合提供的Matlab代码进行仿真实践,深入理解算法实现细节,同时可参考文中提及的相关技术方向拓展研究思路,注重理论分析与仿真验证相结合。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值