早前看了孔浩老师的dwr与springmvc的整合视频,自己跟着动手把各种方式都练习了一下,遇到些问题,记录给自己以后用dwr的时候复制吧。望各位如有问题请观看,虽然对于DWR框架还不理解。
在使用dwr插件必先下载dwr的jar包及所依赖的jar包,此处只贴出代码不解释,还有就是DWR 3.0.M1的包好像有人说maven下载的有问题,所以请更新到最新版本。pom.xml如下:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-**(模块名)</artifactId>
<version>4.1.6.RELEASE</version>
</dependency>
<dependency>
<groupId>org.directwebremoting</groupId>
<artifactId>dwr</artifactId>
<version>3.0.1-RELEASE</version>
</dependency>
在web.xml中的配置如下(不由Spring的Dispatcher来处理dwr的请求):
<servlet><servlet-name>dwr</servlet-name>
<servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>config</param-name>
<!-- 如果有多个用","分开 -->
<param-value>/WEB-INF/dwr.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>dwr</servlet-name>
<url-pattern>/dwr/*</url-pattern>
</servlet-mapping>
而dwr.xml文件如下:
<!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 3.0//EN" "http://getahead.org/dwr/dwr30.dtd">
<dwr>
<allow>
<!-- 从Spring中获取Java对象 -->
<create javascript="dwrService" creator="spring">
<!-- dwrService为在bean中id,由于spring开启了annotation所以直接写名字就好了,没有用annotation请写下类路径-->
<param name="beanName" value="dwrService"/>
</create>
</allow>
</dwr>
总结:
在很多spring3整合dwr3的过程中都使用了在applicationContext.xml 的方式中引入dwr命名空间(namespace)的方法,但亲身试验过,在spring4中这样的方式不行。(或许是我使用的方式不对,总之百度谷歌了一下,一一尝试过,都没有成功)。故采用dwr2时中使用的方法,写一个dwr.xml文件,托管到spring中,最终dwr就托管到了spring中,可以方便快捷的使用了。我猜想之所以用命名空间没有可能是许多人说dwr是具有侵入式的,所以使用的人开始减少,和spring兼容就没以前那么激情咯-!