`
brimstone
  • 浏览: 29018 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

DWR Struts Spring 配置问题

    博客分类:
  • J2EE
阅读更多
xml 代码

今天测试了下DWR Struts Spring 集成配置,因为以前用过DWR 以为不会花多少时间,结果有个小问题折腾了一下午,记录如下

一、开发环境

MyEclpise 5.5GA TomCat6.0 JDK1.5 Struts1.2 Spring 2.0 DWR2.02

二、Web.xml配置

xml 代码
  1. <context-param>  
  2.         <param-name>contextConfigLocation</param-name>  
  3.         <param-value>/WEB-INF/applicationContext.xml</param-value>  
  4.     </context-param>  
  5.     <listener>  
  6.         <listener-class>  
  7.             org.springframework.web.context.ContextLoaderListener   
  8.         </listener-class>  
  9.     </listener>  
  10.   
  11.     <welcome-file-list>  
  12.         <welcome-file>index.jsp</welcome-file>  
  13.     </welcome-file-list>  
  14.   
  15.     <display-name>ajaxDWR</display-name>  
  16.     <servlet>  
  17.         <servlet-name>dwr-invoker</servlet-name>  
  18.         <servlet-class>  
  19.             org.directwebremoting.servlet.DwrServlet   
  20.         </servlet-class>  
  21.         <init-param>  
  22.             <description></description>  
  23.             <param-name>debug</param-name>  
  24.             <param-value>true</param-value>  
  25.         </init-param>  
  26.     </servlet>  
  27.     <servlet-mapping>  
  28.         <servlet-name>dwr-invoker</servlet-name>  
  29.         <url-pattern>/dwr/*</url-pattern>  
  30.     </servlet-mapping>  

问题主要出在这里,在项目中,原来我是用Struts PlugIn的方式加载Spring配置文件

也就是在Stuts-config.xml中加入

  1. <plug-in  
  2.     className="org.springframework.web.struts.ContextLoaderPlugIn">  
  3.     <set-property property="contextConfigLocation"  
  4.         value="/WEB-INF/applicationContext.xml" />  
  5.            
  6. </plug-in>  

用这种方式加载Spring配置文件,DWR无法取得Spring中定义的bean,所以一定要在web.xml中通过ContextLoaderLisenter加载

三、dwr.xml 以及Spring配置文件

xml 代码(dwr.xml)
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN" "http://getahead.org/dwr//dwr20.dtd">  
  3. <dwr>  
  4.  <allow>  
  5.   <create creator="spring" javascript="DS">  
  6.     <param name="beanName" value="DrugService" />  
  7.   </create>  
  8.   
  9.   <convert converter="bean" match="com.trade.vo.rush.*"></convert>  
  10.  </allow>  
  11. </dwr>  

cteator 为spring 指的是使用spring 配置的bean ,javascript 为jsp页面中使用的dwr js文件名称,param name 为beanName表示使用spring中bean id 名称,value 为spring中定义的service的名称

Spring 配置文件applicationContext.xml 中公开的Service

xml 代码
  1. <bean id="DrugService" class="com.trade.service.DrugService">  
  2.         <property name="ddh">  
  3.             <ref bean="DrugDAOHibernate" />  
  4.         </property>  
  5.     </bean>  

四、JSP文件中进行调用

java 代码
  1. <script type='text/javascript' src='../dwr/engine.js'> </script>   
  2.   <script type='text/javascript' src='../dwr/util.js'> </script>   
  3.   <script type='text/javascript' src='../dwr/interface/DS.js'> </script>   
  4.   <script type='text/javascript'>   
  5.   function checkDrug(){   
  6.   DS.helloworld(callback1);   
  7.   }   
  8.   function callback1(msg){   
  9.   alert(msg);   
  10.   }   
  11.      
  12.   </script>  

PS:

①配置完后可以通过http://localhost:8080/项目名称/dwr/index.html 查看dwr.xml中配置是否成功

http://wiki.javascud.org/display/dwrcn/Home Dwr中文文档

 

分享到:
评论
3 楼 lxdhdgss 2009-04-15  
这样的话,spring的WebApplication好像要加载两次的吧
2 楼 SnailWong 2008-09-19  
楼主的方法在dwr+spring下是有效的,但是再加上hibernate之后就找不到sessionFactory了

jbyeva 给出的方法能很好的解决问题,thx
1 楼 jbyeva 2008-02-26  
如果在Stuts-config.xml中引入spring配置文件 也是可以实现的

要在 dwr.xml中加入
<create>
<param name="location" value="applicationContext.xml"></param>
</create>

dwr默认会到web.xml中寻找spring配置文件,如果web.xml中没有 自然就找不到。所以要手动指定。

相关推荐

Global site tag (gtag.js) - Google Analytics