Spring完全整合DWR

DWR的优势在项目中很容易体现出来,近乎完美的封装,超级简单的配置,在现在的Web项目中不使用DWR不是明智的举动。

  给人直观的感觉就是可以在JSP页面中直接调用Service Bean中的方法,并且将返回值返回到页面,页面中可以直接使用。

  如果项目中同时使用到了Spring和DWR,就必须对两者进行整合,原因很简单,因为DWR负责进行远程创建对象,在DWR进行远程创建的过程中,使被创建对象失去了Spring容器进行的Ioc和AOP装配机会。这样创建出来的对象肯定是不能用的。

  整合的方式也很简单,传统的整合方式就是对dwr.xml文件中的配置做少许的调整:....

  文字描述真麻烦,举例对比吧!

  未使用spring的dwr.xml文件内部分配置:

   1. ...
   2. <create creator="new" javascript="自动创建的JS对象名">
   3.   <param name="class" value="类全限定名">
   4. </create>
   5. ...

  使用spring的dwr.xml文件内部分配置应改为:

   1. ...
   2. <create creator="spring" javascript="自动创建的JS对象名">
   3.   <param name="beanName" value="spring容器中类Id">
   4. </create>
   5. ...
6.

  这样配置后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标签:

   1. <beans xmlns="http://www.springframework.org/schema/beans"
   2.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   3.     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
   4.     default-lazy-init="false">

现在改为:

   1. <beans xmlns="http://www.springframework.org/schema/beans"
   2.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   3.     xmlns:dwr="http://www.directwebremoting.org/schema/spring-dwr"
   4.     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
   5.       http://www.directwebremoting.org/schema/spring-dwr http://www.directwebremoting.org/schema/spring-dwr-2.0.xsd"
   6.     default-lazy-init="false">

2. 此外在web.xml中还要用org.directwebremoting.spring.DwrSpringServlet将org.directwebremoting.dwr.DwrServlet替换

3. 之后就可以直接在bean标签中通过下面的方式将service的方法暴露给远程客户端

   1. <bean id="beanId" class="被暴露的service组件">
   2.      ..... 
   3.      <dwr:remote javascript="被暴露的service组件名">
   4.          <dwr:include method="暴露service组件中的方法名" />
   5.      <dwr:include method="暴露service组件中的方法名" />
   6.      ....
   7.    </dwr:remote>
   8. </bean>
9.

4. 需要转换的自定义对象需要在<dwr:configuration>标签内指定:

   1. <dwr:configuration>
   2.
   3.   <dwr:convert type="hibernate3(采用的转换类型)" class="需要转换的自定义类型全限定名">
   4.   </dwr:convert>
   5.   .......
   6. </dwr:configuration>
7.

这种集成方式还是比较方便的.
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值