如何将DWR集成到Java Web应用之中
今天想把集成DWR到Java Web应用中的方法总结一下,不过首先需要说明的是,我绝对不是一个JavaScript的高手,实际上,对于JS我是一窍不通。
目前AJAX已经被应用到了很多的方面,它的优点知道一些,但是现在我还理解不深。前一段时间用RAP作过一个项目,但是由于RAP封装了QooxDoo的底层实现,而且封装的比较严实,所以一直没用能理解到底用AJAX技术有啥好处,为啥不用SSH等等技术。不过今天的目的不是讨论AJAX的,而是介绍如何将DWR集成进来。
- 首先建立一个JAVA WEB项目,比如说AJAXDate;
- 然后将dwr.jar拷贝到/WEB-INF/lib目录下,实际上对于这一点,我是将官方例子dwr.war中包含的所有jar包统统拷贝进来了,因为我实在不确定是不是只考一个dwr.jar就行。所以,我觉得所有新手都可以按照我的做法来做,免得麻烦;
- 修改web.xml文件,添加如下的Servlet;
这一步在网上很多地方都介绍过,但是他们往往直接绍了初始化参数debug,但是后面两个参数很少有介绍,而我实验的结果是如果没有后面两个参数,调用JS的时候就会报错。没有仔细研究DWR,不知道他们的具体含义,但是这么配就对了。
-
在WEB-INF目录下增加一个dwr.xml配置文件;
在我的例子里,我是这么配的,如下图。我的理解是,如果你有一个Java类,其中的某些方法需要暴露给JS使用,那么你需要配置一个<create>节点,并通过<include>子节点来指定你想暴露哪些方法,或者通过<exclude>子节点来禁止访问某些方法;如果你有一个JavaBean在你的页面的JS中会被用到,那么你需要一个<convert>节点。如果你想在你的前台界面中调用某个对象的方法时,那么就需要使用在<create>节点的javascript属性定义的那个值,我的理解是bean的别名来调用。
欲知详情,请自己参考DWR的帮助文档,我就不罗嗦了,其实我也不知道。
在我的com.tr.ect.mdm.MyBean.java文件中有两个方法,一个方法是findCurrencies,无参数,返回一个Currency的List;另外一个方法是getCurrencyCount,无参数,返回一个int值。这两个方法都是从数据库中获取数据,并返回。
- 完成以上两步,我们就可以运行程序了。但是在正式运行之前,我们先按这个URL运行一下【http://localhost:8080/AJAXDate/dwr】;我是运行在Tomcat下,所以端口是8080,而AJAXDate是我们的WEB应用名。这时应该出现下面的窗口;
看见了么,一个JDate,一个MyBean。对照上面的dwr.xml配置,估计你的脚后跟都能理解。点击MyBean,你会被导航到另一个页面:
看见最下面的两个方法了么?这就是我们要暴露的方法。上面的方法不要管,那也是MyBean里的一些方法,只不过我没有去掉。
如果你已经执行到了这里,说明dwr已经被加进来了。而页面上的前面的两个<script>节点的说明是希望你把他加到你的JSP页面中的,如果你使用了DWRUtil的话,还需要将下面的哪个<script>也加进来。
这里面说明一下,我在使用DWRUtil的时候,系统提示'DWRUtil is Undefined',查了一下,说是需要加上如下的代码。我加了,的确好用。
其他的我就不多说了,DWR如何调用带参数、不带参数、有返回值、没有返回值,参数是集合类型,返回值是集合类型,参数是Java类,返回值是Java类的方法都不太一样。需要那本DWR的帮助文档来看看。
至于我的源码,如下。/Files/wayne_wang/AJAXDate.zip,博客园不能上传war文件,所以我把它改成.zip的了。
posted on 2011-01-14 16:39 wayne.wang 阅读(1092) 评论(0) 编辑 收藏 举报