【软件工程】DWR入门教程1736.docx
《【软件工程】DWR入门教程1736.docx》由会员分享,可在线阅读,更多相关《【软件工程】DWR入门教程1736.docx(94页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、如何开始用DWR有两种方法开始DWR,简单的方式是下载WAR文件然后看看。但是这不能帮你知道如何轻松的把DWR整合到你的web应用中,所以还是推荐你按照下面的3个步骤做:1. 安装DWR的Jar包下载dwr.jjar文件。把把它放到你的的webappp的WEBB-INF/lib目录录下。那里可可能已经有很很多其他的jjar文件了了。2. 编辑配置置文件需要把下面的代代码加到WEEB-INFF/web.xml文件件中。那部分需需要和其他的的在在一起,部分也一样样。 ddwr-innvokerr DDWR Seervlett uk.lttd.gettaheadd.dwr.DWRSeervlett
2、debugg truee ddwr-innvokerr /ddwr/*在WEB-INNF目录下的的web.xxml旁边创创建一个dwwr.xmll文件。可以以从最简单的的配置开始: DWR配置文件件定义了那些些DWR会创创建提供远程程调用的Jaavascrript类。在在上面的例子子中我们定义义了两个类来来提供远程调调用,并为其其提供的Jaavascrript类的的名字。在上面我们使用用了new创建器器,它会调用用没有参数的的构造函数来来创建实例,但但是所有JaavaBeaan必须有这这一构造函数数。还要注意意DWR有一一些限制: 不要出现Javvascriipt保留关关键字;和保保留关键字同
3、同名的函数指指定被排除。多多数Javaascrippt的关键字字和Javaa是相同的。所所以你不可能能有一个方法法叫做trry()。但但是该死ddeletee()对与与Javasscriptt有着特殊意意义,而对JJava则不不是。 Javascrript方法法重载是不支支持的,所以以尽量不要再再Java中中使用。 3. 访问下面面的URLhttp:/locallhost:8080/YOURR-WEBAAPP/ddwr/你可以看见一个个页面,里面面有第二步中中的类。接着着往里点,你你会看到所有有可以调用的的方法列表。这这个页面是动动态生成用来来测试的例子子。自己动手试一下下!怎么在你的weeb
4、应用中使使用在文档中有很多多例子演示如如何动态更改改页面中的文文字、更新列列表、操作表表单,还有直直接更改taable中的的内容。每一一个都有如何何实现的介绍绍。另一种方式是看看刚才的页面面中提供的代代码:到 http:/loccalhosst:80880/YYOUR-WWEBAPPP/dwwr/ 页面面,点击你的的类。查看源源码,找到执执行方法的那那几行,把那那些文字粘贴贴到你的HTTML或JSSP中。要包括下面这些些能产生神奇奇效果的Jaavascrript文件件的链接。你也可以把其中中/YOUUR-WEBBAPP/替换成你的的web页面面的相对路径径。DWR根据dwwr.xmll生成和J
5、aava代码类类似的Javvascriipt代码。相对而言Javva同步调用用,创建与JJava代码码匹配的Ajjax远程调调用接口的最最大挑战来至至与实现Ajjax的异步步调用特性。DWR通过引入入回调函数来来解决这个问问题,当结果果被返回时,DDWR会调用用这个函数。有两种推荐的方方式来使用DDWR实现远远程方法调用用。可以通过过把回调函数数放在参数列列表里,也可可以把回调函函数放到元数数据对象里。当然也可以把回回调函数做为为第一个参数数,但是不建建议使用这种种方法。因为为这种方法在在处理自动处处理httpp对象时(查查看Altternattive MMethodd)上会有有问题。这个个方
6、法主要是是为向下兼容容而存在的。简单的回调函数数假设你有一个这这样的Javva方法:public classs Remoote pubblic Strinng gettData(int inndex) . 我们可以在Jaavascrript中这这样使用: .functioon hanndleGeetDataa(str) alertt(str);Remote.getDaata(422, hanndleGeetDataa);42是Javaa方法gettData()的一个参参数。此外你也可以使使用这种减缩缩格式:Remote.getDaata(422, funnctionn(str) allert(
7、sstr); );调用元数据对象象(Metaa-Dataa)另外一种语法时时使用调用用元数据对象象来指定回回调函数和其其他的选项。上上面的例子可可以写成这样样:Remote.getDaata(422, callbback:ffunctiion(sttr) alertt(str); );这种方法有很多多优点:易于于阅读,更重重要的指定额额外的调用选选项。超时和错误处理理在回调函数的元元数据中你可可以指定超时时和错误的处处理方式。例例如:Remote.getDaata(422, callbback:ffunctiion(sttr) alertt(str); , timeoout:50000, er
8、rorrHandller:fuunctioon(messsage) allert(Oops: + messaage); );查找回调函数有些情况下我们们很难区分各各种回调选项项(记住,JJavasccript是是不支持函数数重载的)。例例如:Remote.methood( ttimeouut:3 , eerrorHHandleer:sommefuncc );这两个参数之一一是beann的参数,另另一个是元数数据对象,但但是我们不能能清楚的告诉诉DWR哪个个是哪个。为为了可以跨浏浏览器,我们们假定nulll = undeffined。 所以当前的的情况,规则则是: 如果第一个或最最后一个是一一个
9、函数,那那么它就是回回调函数,没没有元数据对对象,并且其其他参数都是是Java的的方法参数。 另外,如果最后后一个参数是是一个对象,这这个对象中有有一个calllbackk成员,并且且它是个函数数,那么这个个对象就是元元数据对象,其其他的都是JJava方法法参数。 另外,如果第一一个参数是 null ,我我们就假设没没有回调函数数,并且其他他的都是Jaava方法参参数。尽管如如此,我们会会检查最后一一个参数是不不是nulll,如果是就就发出警告。 最后如果最后一一个参数是nnull,那那么就没有ccallbaack函数。 另外,发出错误误信号是个糟糟糕的请求格格式。 创造一个与Jaava对象匹
10、匹配的Javvascriipt对象假设你有这样的的Java方方法:public classs Remoote publiic voiid settPersoon(Perrson pp) thiis.perrson = p; Person对对象的结构是是这样的:public Persoon privaate Strinng namme; privaate int agge; privaate Daate appoiintmennts; / geetterss and setteers .那么你可以在JJavasccript中中这样写:var p = name:Fredd Blogggs, age
11、:442, appoiintmennts: new Daate(), new Daate(11 Jan 2008) ;Remote.setPeerson(p);在Javasccript没没有出现的字字段,在Jaava中就不不会被设置。因为setteer都是返回回voidd,我们就就不需要使用用callbback函数数了。如果你你想要一个返返回voidd的服务端方方法的完整版版,你也可以以加上calllbackk函数。很明明显DWR不不会向它传递递任何参数。TransfoormerFFactorryConffiguraationEError这个问题的现象象是在启动有有DWR的WWeb应用时时出现
12、如下sstack tracee:root caausejavax.xxml.trransfoorm.TrransfoormerFFactorryConffiguraationEError: Proviider oorg.appache.xalann.proccessorr.TrannsformmerFacctoryIImpl nnot foound javaxx.xml.transsform.TranssformeerFacttory.nnewInsstancee(Unknnown SSourcee)这个问题和DWWR没有什么么关系,那是是因为Tommcat没有有配置好。比比较简单的解解决办法
13、是下下载Xalaan替换掉$TOMCAAT-HOMME/commmon/llib目录下下的xalaan.jarr文件。DWWR2.0能能更好的处理理这个问题,但但是本质的问问题还是因为为DWR的XXML序列化化需要有XSSLT解析器器的支持。如果你用JDKK5还是有这这个问题的话话,你可以增增加以下VMM参数来使TTomcatt正常工作。-Djavaxx.xml.transsform.TranssformeerFacttory= com.sun.oorg.appache.xalann.inteernal.xsltcc.traxx.TrannsformmerFacctoryIImplXML解析错
14、误误在刚开始用DWWR的时候经经常遇到的一一个错误就是是XML解析析错误。其实实这和DWRR没有多大关关系,主要是是因为Tommcat里面面自带的Xeerces的的问题,要不不是该有的时时候没有,要要不是不该有有的时候有了了。 JDK 1.33自身没有XXML解析器器,所以你需需要xerccesImppl.jarr和xml-apis.jar. JDK 1.44.0 和 JDK 11.4.1 虽然有了XXML解析器器,但是有很很多bug,所所以你还是需需要把xerrcesImmpl.jaar放到toomcatcommoonenddorsedd目录下。 JDK 1.44.2和JDDK 5自带带的X
15、ML解解析器工作的的很好,你就就不需要再加加其他的了。另外要提的一点是,不同版本的Tomcat需要的XML解析器不一样。所以要注意检查它和JDK的版本兼容性。 用BEA Weeblogiic的Claasspatth问题Weblogiic 8.11(有可能其其他版本同样样)可能找不不到DWR的的类。这大多出现在ddwr.jaar放在APPP-INFF目录下(AAPP_INNF/libb)的情况。在在这种情况下下DWR依然然可以工作,例例如debuug页面可以以看见,但是是DWR找不不到你的类。解决办法是把ddwr.jaar放到WEEB-INFF/lib目目录下。没有cookiies的情况况下用D
16、WRR当不能用coookies时时,servvlet规范范通过URLL重写来支持持HttpSSessioon。DWRR 2.x通通过它生成的的URL来支支持这项功能能。但是DWWR 1.xx没有这个功功能。你可以以通过以下办办法让DWRR 1.x 也支持coookiess: 从dwr.jaar中提取eenginee.js,保保存到你的文文件系统中,就就像jsp文文件一样. 修改DWREEnginee._senndDataa = fuunctioon(battch) 方法, 加加入一行: statsInnfo += ;jssessioonid= + 这样就可以让DDWR 1.x支持urrl重写了
17、。DDWR 2+默认支持。传递额外的数据据到calllback函函数 通常我们需要传传递额外的数数据到calllbackk函数,但是是因为所有的的回调函数都都只有一个参参数(远程方方法的返回结结果),这就就需要一些小小技巧了。 解决方案就是使使用Javaascrippt的闭包特性。 例如,你的回调调函数原本需需要像这个样样子: functioon calllbackkFunc(dataFFromSeerver, dataaFromBBrowseer) / 用dattaFrommServeer和dattaFrommBrowsser做些事事情. 那么你可以像这这个组织你的的函数: var datt
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程 DWR 入门教程 1736
限制150内