当然学习都是从经典helloword开始,这个DWR的学习过程也不例外,首先我从网上download了相关的文件2.0.5通知一下热衷DWR的人们现在的新版本是2.0.5,然后到网上搜索一个入门的例子,避免不了的,就是helloword,然后我根据步骤一步步来,敲了那些无聊的代码,我盼望的是能够看到结果,但是在未运行之前心中就存在无数的疑问,但是在看了很多网页时,发现别人的入门helloword都是那样子的,所以我也就只有不加思索,直接运行咯,果然不出我所料问题出来了:
疑惑:在页面中嵌入<script type='text/javascript' src='dwr/interface/hello.js'></script>
<script type='text/javascript' src='dwr/engine.js'></script>
<script type='text/javascript' src='dwr/util.js'></script>
首先这些个js我不知道从哪里来的,但是经过我的测试在页面中发现util.js中的对象并不为空,那么证明还是能引用到这个文件的,但是至于是怎么引用的呢,这是个问题,因为上下文目录中没有存在engine.js跟util.js,一开始疑惑了一下,不笨的我,很快就分析出来了,肯定是uk.ltd.getahead.dwr.DWRServlet发送这两个文件给浏览器的(因为dwr.jar中存在这两个js文件,这在之前我就观察到了,因为官方发布的下载中就没有看到一些js的下载,所以很肯定就是在jar文件中,而jar文件只依赖这一个,不在这里,该在哪里呢?哈哈,研究就要不断思考!),因为它拦截的正好是/dwr/*,这个问题是解答了,但是呢?hello.js是dwr调用远程组件的一个js,据说是dwr框架生成的,估计也是很通过这种方式生成,因为物理路径找不到这个文件,但是恰恰问题就是出在这个上面,浏览器中说hello没有定义,然后后台也是也是Hello类没有找到之类的,因为此时此刻没有打开工具,所以那个错误原文显示不是这样的,差不多就是Hello没有定义,没有找到这类的错误吧,可以肯定的是dwr定义的这个组件是绝对没有问题的,是不可能找不到的.然后我就怀疑是否是hello.js这个文件是否要手动的调用dwr的某些模块来生成,然后手动的放到相应的目录下面去呢?于是乎,我就google dwr js生成,dwrjs是如何生成的,dwrjs是否要手动生成等等关键词,都没有能帮我解决问题,所以我就写了这篇文章,望研习过DWR的朋友赐教,谢谢!