1、兰州交通大学学报(自然科学版 )第 26 卷Function getZipData(zipCode)Xhr=new XMLHttpRequest();Xhr.open(/GET0,/getCityStateFromZip.request?0+zipCode);Xhr.send(null);Function processZipData()Var data=xhr.responseText;Var cityState=data.split(-,.);Document.getElementById(/city0).value=cityState0;Document.getElementById(/
2、state0).value=cityState1;4.2.2 解决数据验证功能基于 XML 的异步通信,既能获的客户端验证的好处(无需等待页面刷新的 /瞬时 0 反馈),同时又能实现服务器端的验证功能(基于服务器端数据或规则进行比对).在 WEB 页面中用 Onblue 事件调用 validateField()方法来执行验证.validateField()首先根据其传入的参数,创建一个添加到验证 URL的参数列表,紧接着它将使用 prototype 程序库所提供的 AJAX 的功能.更新者(Updater)将发起该请求,并将生成的错误信息填充到这个字段.此外还要创建一个基于服务器验证引擎,编写
3、了一个自定义 servlet,只需传入字段值以及规则(否则必填,以及特定的规则),就能返回空字符串 (意味着验证成功)或错误信息(说明失败). 具体的 validateField()如下:Function validateField(fieldname,required,validation,update)Var param=0type=0+validation+/New Ajax.Upda-ter(update, validationUrl, Asynchronous: true, Method:0get0,Paramters:params)4.2.3 解决更新提示问题在有些 CRM 的 W
4、EB 页面中 ,当 city 和 State字段被更新后,我们使用 YFT 方法(yellow fade 技术)来提示用户.更新 getZipData()函数,当请求失败时,将调用 assignError()函数来显示消息,当请求返回了数据时触发 onSuccess,此时包含 city 和state 的行先变成黄色,然后在一秒内变为白色.具体 getZipData()函数代码如下 :Function getZipData(zipCode)New Ajax. Updater (/rewrite0, url, Asynchronous:true,Method:0get0,Parameters:0z
5、ip=0+zipCode+0onFailure:function(request) assignError(request. re-sponseText);)4.2.4 解决自动更新问题在 CRM 中,要实现根据用户在 zip 字段中输入的内容,提示所有可能与其匹配的 zip 值,即当用户在 zip 字段中输入值时,将根据可用的 zip 代码列表进行比较,返回可能匹配(以所输入的值开头 )的值.从实现自动完成功能的 servlet 开始,将使用数据库来存储 zip 代码,在这个 servlet 中将用字符数组来完成存放和比较功能.在 ui 的页面中添加 ajax.au-toCompleter
6、和一个 容器,它用来保存从服务器中获取的应答,并将 autocomplete=0off0 以防浏览器去填充其值,因浏览器自动填充的优先级比javascript 高,会使的功能完全失效 ,故必须禁止它.添加名为 zip_values 的容器来保存结果,添加一个 块来调用 ajax.autoCompleter,第一个参数是需要实现/自动填充 0 功能的输入框的ID,第二个参数是显示结果的容器,第三个参数是请求发送的目的服务器,最后一个参数则是一个option 集合.具体的 servlet 中代码和 UI 代码如下:Public class AutoCompleteServlet extends H
7、ttpServ-letPublic void doPost(HttpServletRequest,HttpServletRe-sponse response)Throws IOExceptionSystem.out.printIn(request);ArrayList results=new ArrayList();String val=request.getParameter(/zip0);For( int i=0;i0;Iterator iter=results.iterator();While(iter.hasNext()Message+=00+(String)iter.next()+.
8、0;Messaga+=00;Response.setContentType(/text/html0);PrintWriter out+response.getWriter();114潘仙张等:基于 XML 的异步通信改进 CRM 系统当 WEB 页面请求服务器时,会把整个页面的内容更新,这样会更新好多不必要的内容,增加了网络传输量,影响系统的反应速度.不能很好地实现网络传输时只传输所要的内容,而减少不必要的内容的传输.以至于影响客户端的响应速度.1)不能很好地实现 0 绿屏 0,绿屏就是在 CRM 的 WEB 页面,当用户只需输入邮编 ZIP 时,而相应的省份和城市回自动填上正确的值.2)不能
9、很好地实现数据验证功能,在 CRM 的 WEB 页面虽然可以用 JavaScript 验证正则表达式匹配和必填字段检查以及小规模的数据比对,但是,它却无法根据数据库以及驻留在服务器端的数据或规则来进行验证.3)不能很好地实现更新提示问题,单纯地基于 J2EE 组件实现的 CRM的 WEB 页面装载多是静态的,就是当页面要更新内容时,必须重新装载,这样很难实现通过高亮显示来突显页面中的某个区域,以此来吸引客户的注意力.4)不能很好地实现自动更新问题,自动更新就是在 CRM 中根据用户在 ZIP 字段输入的内容,提示所有可能与其匹配的 ZIP 值.4 CRM 系统异步通信方式4.1 基于 XML
10、异步通信方式基于 XML 异步通信方式实现的 CRM 系统的通信方式如图 3 所示,其中基于 XML 异步通信方式就是就是基于 AJAX 框架3与 XML4,当浏览器与服务器进行通信时,浏览器能在不同线程中来处理请求与接收应答3,在使用三层模式设计CRM5,6时充分发挥异步的效果2,采用 XML 进行WEB 上的数据表示和数据交换的标准.具体实现就是基于 JavaScript,通过 XMLHttpRequest 来实现异步的远程通信,并利用 XML 来实现数据的封装,更新等,以达到交互性更强的用户界面效果.整个系统采用 XMLHttpRequest 中的 ReadyState 状态位来表示浏览
11、器的的状态,以达到控制浏览器与服务器的异步效果.图 3 基于 xml 异步通信方式实现的 CRM 系统的通信方式Fig.3 CRM communication way owing to XML asynchronization communicationCRM 系统异步通信方式下的 WEB 页面的生命周期的描述如图 4.图 4 CRM 系统异步通信方式下的 WEB 页面的生命周期的描述Fig.4 Life cycle description of WEB page ofCRM asynchronization communication1)用户通过指定 URL 来发起最初的请求 .2)服务器返
12、回原始的 HTML 页面.3)浏览器通过内存中的 DOM 树来展现页面.4)用户行为引发基于其它 URL 发出后续的异步请求,其内容不在现有的 DOM 树中.5)浏览器响应原始页面中的回调函数,并返回数据.6)浏览器解析结果,并使用新的数据更新内存中的 DOM 树,然后再呈现在用户屏幕上(该页重绘了,但没有/刷新 0).4.2 解决各个问题的具体实现4.2.1 解决绿屏问题在 WEB 页面中的邮编代码为,通过 onblur=getZipData(this.value)属性注册了时间处理器,当离开该元素就调 getZipData(this.value)的脚本函数,而传入该函数的参数是this.v
13、alue,它说明传的值是元素中输入的值,而 this 是对注册了事件处理器的元素的引用.我们将用 getZipData(this.value)将邮编发送给服务器,用 processZipData()来处理服务器上返回的应答信息.具体 getZipData(this.value)和 pro-cessZipData()如下:113基于 XML 的异步通信改进 CRM 系统*潘仙张, 米根锁, 陈松考(兰州交通大学电子与信息工程学院,甘肃兰州 730070)摘 要 :客户关系管理(CRM)系统近年来得到普遍关注,然而实施 CRM 的技术还不是很成熟.提出了 1 种基于AJAX 框架和 XML 的 C
14、RM 系统,通过很好地控制浏览器与服务器发送和接收信息的状态,达到异步传输数据,提高了响应速度,从而更好地解决了 CRM 中的 0 绿屏 0、复杂的数据验证、更新提示、以及自动更新等问题.关键词:J2EE;XML;异步通信;CRM;JSP;AJAX;中图分类号:TP391 文献标识码 :ACRM(客户关系管理)可以加速企业对客户的反应速度,帮助企业改善服务,提高企业的工作效率;有效地降低成本,规范企业的管理,帮助企业深入挖掘客户的需求,为企业的决策提供科学的支持1.本文指出了单纯地基于 J2EE 组件实现的 CRM 系统的不足,并提出了改进的方法.1 AJAX 技术组成AJAX 是采用了以 X
15、ML 作为传输数据的标准,结合异步通信的思想的一种技术,它包括#基于标准化的 XHTML 和 CSS;#通过 DOM 实现动态显示和交互;#通过 XML 和 XSLT 来进行数据交换和处理 ;#XMLHttpRequest 通过异步方式获取数据;#使用 JavaScript 来整合以上所有的技术.1) XMLHttpRequest 是 XMLHttp 组件的对象,是 AJAX 技术中最核心的技术.AJAx 的无刷新更新页面特点,主要得益于 XMLHTTPRequest 对象.2) XML 是可扩展标记语言(Extensib1e Mark-upLanguage)的简称.它可以规范地定义结构化数据
16、,使网上传输的数据和文档符合统一的标准.XML 表述的数据和文档,可以很容易地让所有程序共享.2 CRM 的系统结构本文所设计的 CRM 系统采用 B/S 结构,整个系统(如图 1 所示)分为 3 个层次,分别是用户层、中间程序层和数据仓库.用户可以通过多种方式(浏览器、移动设备、电话等)访问 CRM,来自用户层提交的信息将送到中间程序层进行处理,中间程序层在处理数据的时候访问数据仓库,取出有用的数据,处理之后把结果返还给用户.图 1 CRM 系统的 3 层结构Fig.1 The3layers of structure of CRM3 基于 J2EE 组件实现的 CRM 的通信方式单纯地基于
17、J2EE 组件实现的 CRM 的通信方式如图 22所示.图 2 单纯地基于 J2EE 组件实现的 crm 的通信方式Fig.2 CRM communication way owing to J2EE*收稿日期:2007O01O08作者简介:潘仙张(1981O),男,浙江临海人,硕士研究生.第 3 期潘仙张等:基于 XML 的异步通信改进 CRM 系统Out.printIn(message);以下为 ui 的代码:邮编:New Ajax.Autocompleter(-zip.,.zip_value.,-/ajaxian-book-crm/autoComplete.,)4.3 CRM 系统在异步通
18、信方式下的优点1)较少的服务器端事件:现在在 WEB 应用中的组件可以发出较少的请求,获取少量的信息,然后通过 DOM 变换更新部分页面,而非刷新整个页面.2)异步:向服务器提交请求之后,不会影响浏览器继续操作.用户可以继续使用应用系统的其他部分,而 UI 会更新以提醒用户请求已经发出.3) OnAnything:我们能够根据用户的操作向服务器回传指令.现代浏览器能够捕获绝大多部分操作系统确认的用户事件:单击鼠标 ,鼠标移过,按下键盘等.任何用户事件都能够触发一个异步的请求.5 结论合理的运用异步通信方式与 XML 的结合,能极大地提高 CRM 系统的性能,方便了客户的使用,使企业能与客户达大
19、最大限度的沟通,增加企业的利润与效益.参考文献:1 伍芄华多媒体呼叫中心构建与 CRM 策略M.北京:人民邮电出版社,2003.2 李红,董渊,曹永宁,等.基于 J2EE 的企业信息平台的设计与实现J.计算机工程,2003,29(2):204O206.3 柯自聪.AJAX 开发精要- 概念,案例与框架M.北京:电子工业出版社,2006.4 White C.XML 从入门到精通 M.周生炳译.北京: 电子工业出版社,2002.5 孙卫琴.精通 Struts:基于 MVC 的 Java Web 设计与开发M.北京 :电子工业出版社,2004.6 蔡明,陈永运.J2EE 架构的研究与应用J.计算机应
20、用与软件,2004,21(1):42O44.7 游丽贞,郭宇春,李纯喜.AJAX 引擎的原理与应用J.微计算机信息,2006,26:2O3.Improving CRM System Based on XMLAsynchronous CommunicationPan Xianzhang, Mi Gensuo, Ghen Songkao(School of Electronic and Information Engineering,Lanzhou Jiaotong University Lanzhou 730070,China)Abstract:The customer relations sy
21、stem (CRM) has managed to obtain the universal attention in recentyears.However,the implemented CRM technology is not very mature.One kind of CRM system based onthe Ajax frame and XML is proposed,which can well control the browser and server with information tran-simission and receive condition,to achieve the asynchronous transmission data,enhance the speed of re-sponse,thus in better solution of CRM/green screen0, complex data confirmation function, renewalprompt,automatic renewal technology and so on.Key words:J2EE;XML;asynchronous communication;CRM;JSP;AJAX115