Spring完全整合DWR(转)
2011-09-14 13:24
337 查看
DWR的优势在项目中很容易体现出来,近乎完美的封装,超级简单的配置,在现在的Web项目中不使用DWR不是明智的举动。 给人直观的感觉就是可以在JSP页面中直接调用Service Bean中的方法,并且将返回值返回到页面,页面中可以直接使用。
如果项目中同时使用到了Spring和DWR,就必须对两者进行整合,原因很简单,因为DWR负责进行远程创建对象,在DWR进行远程创建的过程中,使被创建对象失去了Spring容器进行的Ioc和AOP装配机会。这样创建出来的对象肯定是不能用的。
整合的方式也很简单,传统的整合方式就是对dwr.xml文件中的配置做少许的调整:....
文字描述真麻烦,举例对比吧!
未使用spring的dwr.xml文件内部分配置:
...
<create creator="new" javascript="自动创建的JS对象名">
<param name="class" value="类全限定名">
</create>
...
使用spring的dwr.xml文件内部分配置应改为:
...
<create creator="spring" javascript="自动创建的JS对象名">
<param name="beanName" value="spring容器中类Id">
</create>
...
这样配置后DWR远程创建的这个service对象就可以具备了Spring容器内对象的特征,远程创建的Service对象中的方法也就享有了Spring的声明式事务。这样就可以满足我们项目的一般需求了。
Spring2.0中增加了自定义命名空间,DWR开发团队也为之做除了贡献,这使Spring和DWR整合起来更加方便了,让我们可以彻底告别dwr.xml配置文件了。
我们要做的就是:
1.在beans标签中加点内容而已:
http://www.directwebremoting.org/schema/spring-dwr
http://www.directwebremoting.org/schema/spring-dwr-2.0.xsd
老办法,对比说明,以前Spring配置文件中beans标签:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd default-lazy-init="false">
现在改为:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:dwr="http://www.directwebremoting.org/schema/spring-dwr"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd http://www.directwebremoting.org/schema/spring-dwr http://www.directwebremoting.org/schema/spring-dwr-2.0.xsd" default-lazy-init="false">
2. 此外在web.xml中还要用org.directwebremoting.spring.DwrSpringServlet将org.directwebremoting.dwr.DwrServlet替换
3. 之后就可以直接在bean标签中通过下面的方式将service的方法暴露给远程客户端
<bean id="beanId" class="被暴露的service组件">
.....
<dwr:remote javascript="被暴露的service组件名">
<dwr:include method="暴露service组件中的方法名" />
<dwr:include method="暴露service组件中的方法名" />
....
</dwr:remote>
</bean>
4. 需要转换的自定义对象需要在<dwr:configuration>标签内指定:
<dwr:configuration>
<dwr:convert type="hibernate3(采用的转换类型)" class="需要转换的自定义类型全限定名">
</dwr:convert>
.......
</dwr:configuration>
这种集成方式还是比较方便的,目前这么用感觉Spring和DWR“真正”在一起了,哈哈!
个人学习总结,如有什么理解错误,希望有朋友可以提出来,一起讨论学习。
如果项目中同时使用到了Spring和DWR,就必须对两者进行整合,原因很简单,因为DWR负责进行远程创建对象,在DWR进行远程创建的过程中,使被创建对象失去了Spring容器进行的Ioc和AOP装配机会。这样创建出来的对象肯定是不能用的。
整合的方式也很简单,传统的整合方式就是对dwr.xml文件中的配置做少许的调整:....
文字描述真麻烦,举例对比吧!
未使用spring的dwr.xml文件内部分配置:
...
<create creator="new" javascript="自动创建的JS对象名">
<param name="class" value="类全限定名">
</create>
...
使用spring的dwr.xml文件内部分配置应改为:
...
<create creator="spring" javascript="自动创建的JS对象名">
<param name="beanName" value="spring容器中类Id">
</create>
...
这样配置后DWR远程创建的这个service对象就可以具备了Spring容器内对象的特征,远程创建的Service对象中的方法也就享有了Spring的声明式事务。这样就可以满足我们项目的一般需求了。
Spring2.0中增加了自定义命名空间,DWR开发团队也为之做除了贡献,这使Spring和DWR整合起来更加方便了,让我们可以彻底告别dwr.xml配置文件了。
我们要做的就是:
1.在beans标签中加点内容而已:
http://www.directwebremoting.org/schema/spring-dwr
http://www.directwebremoting.org/schema/spring-dwr-2.0.xsd
老办法,对比说明,以前Spring配置文件中beans标签:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd default-lazy-init="false">
现在改为:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:dwr="http://www.directwebremoting.org/schema/spring-dwr"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd http://www.directwebremoting.org/schema/spring-dwr http://www.directwebremoting.org/schema/spring-dwr-2.0.xsd" default-lazy-init="false">
2. 此外在web.xml中还要用org.directwebremoting.spring.DwrSpringServlet将org.directwebremoting.dwr.DwrServlet替换
3. 之后就可以直接在bean标签中通过下面的方式将service的方法暴露给远程客户端
<bean id="beanId" class="被暴露的service组件">
.....
<dwr:remote javascript="被暴露的service组件名">
<dwr:include method="暴露service组件中的方法名" />
<dwr:include method="暴露service组件中的方法名" />
....
</dwr:remote>
</bean>
4. 需要转换的自定义对象需要在<dwr:configuration>标签内指定:
<dwr:configuration>
<dwr:convert type="hibernate3(采用的转换类型)" class="需要转换的自定义类型全限定名">
</dwr:convert>
.......
</dwr:configuration>
这种集成方式还是比较方便的,目前这么用感觉Spring和DWR“真正”在一起了,哈哈!
个人学习总结,如有什么理解错误,希望有朋友可以提出来,一起讨论学习。
相关文章推荐
- Spring完全整合DWR
- dwr spring整合
- dwr与spring整合
- 在Spring 2中整合DWR 2
- 多spring配置文件整合DWR
- Ajax------------- spring+dwr整合--json作为数据交换
- 《Lucene、webservice、(svn_ant_maven)、DWR、Freemarker、POI视频教程》更新了Spring、JAXWs的整合并且完成了一个小项目
- Spring与DWR整合
- Spring整合Dwr,Cannot locate BeanDefinitionParser for element [annotation-scan]
- Spring整合DWR
- Dwr整合Spring使用Annotation
- Ajax------------- spring+dwr整合
- DWR的运用和spring的整合.
- DWR+Spring+Hibernate的整合
- dwr和spring整合
- dwr和spring的整合
- 使用MyEclipse集成SSH和DWR(一)整合Spring和Struts
- DWR+SpringMVC整合的3种方式之一
- Spring+hibernate+DWR整合
- dwr与spring3整合