基于XMLHTTP组件实现电子政务平台下的站内消息系统

来源:岁月联盟 作者:张俊灵 李也白 时间:2010-08-30
摘  要  本文以B/S结构的政务内网系统为背景,采用XMLHTTP和JSP技术,架构并实现了电子政务平台下的站内即时消息系统。      XMLHTTP  站内即时消息  电子政务   B/S结构 

0  引言

    随着Internet技术的兴起和不断,B/S(Browser/ Server)结构,即浏览器和服务器结构,是对C/S结构的一种改进,在B/S结构下的开发模式已经被越来越多的人们接受,具有升级维护方便,容易扩充,客户端只用WWW浏览器,重用性好,可适用在广域网等优点。本文以B/S结构的电子政务内网系统为背景,在该系统下设计并实现站内即时消息系统。在不使用如QQ,MSN等通讯软件的情况下,达到站内用户即时交流的目的。

1 系统背景

    互联网的飞速发展使的电子商务和办公自动化越来越普及,加上安全技术的不断进步,政府部门内部的网络化办公、电子化已是大势所趋。电子政务系统应用而生。电子政务主要包括三个组成部分:一是政府部门内部的电子化和网络化办公;二是政府部门之间通过机网络而进行的信息共享和实时通信;三是政府部门通过网络与民众之间进行的双向的信息交流。出于安全性的考虑,一些部门可能限制员工使用QQ,MSN等即时消息工具,但员工之间又存在这种即时交流的需求,在政务系统的内网环境下开发一个站内即时消息系统显的尤为重要。

2  XmlHttp组件介绍

    XmlHttp是一套可以在Javascript、VbScript、Jscript等脚本语言中通过Http协议传送或从接收XML及其他数据的一套API。现在的绝大多数浏览器都增加了对XmlHttp的支持,IE中使用ActiveXObject方式创建XmlHttp对象,其他浏览器如Firefox,通过window.XMLHttpRequest来创建Xmlhttp对象。XmlHttp组件最大的用处是可以更新网页的部分内容而不需要刷新整个页面。多应用于聊天室、文字直播等方面。    XmlHttp提供客户端同Http服务器通讯的协议。客户端用Xmlhttp对象的Open方法向服务器发送Xmlhttp请求,打开一个到服务器的连接,连接可以是同步连接,也可以是异步连接,同步连接客户端等待服务器返回消息后才去执行其它操作,而异步连接时客户端不用等待服务器的响应,服务器返回的数据类型都以下几种。    (1)responseTxt:将响应的信息作为文本字符串返回;    (2)responseXML:将响应信息格式化为Xml Document对象并返回;    (3)responseStream:将响应信息视为Stream对象;    (4)responsevBody 将响应信息正文以unsigned byte数组形式返回;    客户端调用XmlHttp的过程比较简单,一般有以下几个步骤:     (1)创建XmlHttp对象,IE中一般使用ActiveXObject方式来创建。    (2)打开与服务端的连接,同时定义指令发送方式,服务网页(URL)和请求权限等。    客户端通过Open命令打开与服务端的服务网页的连接。与普通Http指令传送一样,可以用"GET"方法或"POST"方法指向服务端的服务网页。本文的例子中指向了chaxun.jsp这个文件。    (3)发送指令,也即发送XmlHttp的请求,发送时也可以携带数据。    (4)等待并接收服务端返回的处理结果。本文代码部分是将返回的数据显示在网页的一个弹出对话框里面。     (5)释放XmlHttp对象。

3  系统结构设计

    由于电子政务系统包括内网,公网以及专网的建设,本文主要针对内网的架构进行阐述。前台程序应用当前流行的动态网站开发语言Jsp,Web 服务器使用Weblogic 8.1,后台数据库是Oracle 9i,在政府部门内部架设自己的Web服务网络,实现电子政务的办公自动化,网络化。网内用户可以向Web 服务器发送Jsp请求,Web 服务器根据业务逻辑操作数据库,将得到的数据返回到客户端。内网的框架图见下。图1 系统框架图    用户要发送信息时,先在前台的Jsp页面填写好收信人和消息的内容,提交表单,将数据存入后台的数据库,每个用户间隔一段时间就向Web服务器发送XmlHttp请求,和Web服务器建立一个连接,查询是否有本用户未读的消息,如果有,返回数据并显示出来,业务逻辑见下图。图2 业务逻辑图

 

4  代码分析

    在系统的主页面中加入如下的一段Javascript脚本语言,其作用就是间隔一段时间向web 服务器发送Xmlhttp请求并和服务器建立一个异步连接,请求服务器执行一个负责查询的Jsp文件,并显示返回的数据,下面列出了主要的代码。<script language="javascript">    function GetResult(){    var test = new ActiveXObject("Microsoft.XMLHTTP");//新建一个XMLHTTP对象    test.open("POST","http://localhost:7001/innernotice/chaxun.jsp",false);//使用POST方法打开一个到服务器chaxun.jsp文件的连接,false表示以异步方式通信    test.send();  //发送xmlhttp请求,send方法可以加参数携带发送数据;     var str=unescape(test.responseText);//接受服务器以字符串类型返回的数据,    并解码;    if((str.indexOf("")>-1)||(str.indexOf("Error")>-1)){}    Else{        var show=window.open('消息',"_blank");        show.document.open();        show.document.write(str); }//返回的数据如果为空或者出现运行错误,则不输出信息,否则弹出对话框显示消息;    setTimeout("GetResult()",15000);//间隔15秒建立一次连接;    }</script>    Web 服务器接受到请求后会执行chaxun.jsp文件,返回得到的数据,主要代码见下面。<%    ……….//连接数据库并执行查询语句    String From = rs.getString("infofrom"); //得到发送人信息;    String Info = rs.getString("noticeinfo");//得到消息内容;    String str="<tr><td>"+From+"</td></tr> <tr><td>"+Info+"</td></tr>";//组合返回到客户端的字符串str    out.print(str); //返回数据到客户端;    …………//关闭连接和数据库;    %>

5  实验结果

    进入消息系统点击发送消息链接,就会出现如下图的界面,选择好收信人,填写要发送消息的内容,点击发送按钮就完成了消息的发送。图3发送消息界面    当以科长的身份登录系统或者科长已经登录了内网系统时,会在屏幕上弹出一个接收消息的对话框,这样便实现了在线用户之间的消息交流。

图4 接收消息界面

6  结论

    本文通过架构并实现了政务内网系统中站内消息的即时交流,对于一些可能限制员工使用QQ,MSN等即时消息工具的部门,只需在部门内部架构自己的Web服务器,采用上面的技术可以实时交流的目的。    这样设计的基本思想是每间隔一定时间客户端向Web服务器发送XmlHttp请求,建立异步连接,接受响应消息。为了达到即时交流的目的,客户端频繁的和服务器建立连接,如果客户数量比较多的话,的速度可能会受到影响。但在一般的部门,完全可以通过web服务达到在线用户即时交流的目的。

[1]龙马工作室.jsp+oracle组建动态网站[M].北京:人民邮电出版社.2005年[2]刘彬.jsp数据库高级编程[M].北京:清华大学出版社,2006[3]XmlHttp中文参考网站: [4]刘德山,使用XMLHttp组件实现浏览器与服务器的通信,电脑学习[J], 2002年 第6期[5]陈永凯.顾绍元,基于Ajax技术实现浏览器与服务器的异步通信,福建电脑[J] 2006年第9期

图片内容