dwr 需要spring注入方法

本文介绍了如何在DWR中使用Spring注入DAO层对象,以解决JSP页面Ajax调用业务层方法时因缺少DAO对象导致的错误。主要步骤包括在web.xml中配置Spring的context-loader-listener加载ApplicationContext,保持Spring配置不变,以及修改DWR配置文件,使用creator='spring'让Spring管理业务类并注入DAO。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.当JSP页面的Ajax调用业务层方法时,业务需要DAO层对象,而DAO层对象我们是通过spring来注入的,如果我们直接用DWR暴露给js的对象去调用业务的方法时,就会出现错误。因为业务类DAO对象是空的。这时我们就要通过DWR整合的SPRING的形式来加载对象。
2、要用到SRPING的东西,就是必须加载SPRING的配置文件(applicationContext.xml),在这里我们通过服务启动时去加载,所以要配置修改web.xml文件。在原来的基础上添加以下配置:

Java代码 复制代码 收藏代码

  1.  <!--- 这个就是用来加载SPRING配置文件的---->   
  2.  <context-param>   
  3.         <param-name>contextConfigLocation</param-name>   
  4.         <param-value>   
  5.             /WEB-INF/classes/applicationContext.xml   
  6.         </param-value>   
  7. </context-param>   
  8. <listener>   
  9.     <listener-class>   
  10.           org.springframework.web.context.ContextLoaderListener   
  11.     </listener-class>   
  12. </listener>   
  13.   
  14. <!--- 这个是DWR本身的配置--->   
  15. <servlet>   
  16.     <servlet-name>dwr</servlet-name>   
  17.      <servlet-class>   
  18.             org.directwebremoting.servlet.DwrServlet   
  19.         </servlet-class>   
  20.         <init-param>   
  21.             <param-name>debug</param-name>   
  22.             <param-value>true</param-value>   
  23.         </init-param>   
  24. </servlet>   
  25.   
  26. <servlet-mapping>   
  27.     <servlet-name>dwr</servlet-name>   
  28.     <url-pattern>/dwr/*</url-pattern>   
  29. </servlet-mapping>  
 <!--- 这个就是用来加载SPRING配置文件的---->
 <context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>
			/WEB-INF/classes/applicationContext.xml
		</param-value>
</context-param>
<listener>
	<listener-class>
		  org.springframework.web.context.ContextLoaderListener
	</listener-class>
</listener>

<!--- 这个是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>
</servlet>

<servlet-mapping>
	<servlet-name>dwr</servlet-name>
	<url-pattern>/dwr/*</url-pattern>
</servlet-mapping>


3、SPRING 的配置不变,一样给业务类注入DAO对象

 

Java代码 复制代码 收藏代码

  1.    <bean id="bidbiz" class="com.byz.bizimpl.BidImpl">   
  2.     <property name="biddao">   
  3.        <ref local="BidDAO"/>   
  4.     </property>   
  5.     <property name="goodsdao">   
  6.         <ref local="GoodsDAO" />   
  7.     </property>   
  8.     <property name="userdao">   
  9.         <ref local="UsersDAO" />   
  10.     </property>   
  11. </bean>  
    <bean id="bidbiz" class="com.byz.bizimpl.BidImpl">
	    <property name="biddao">
	       <ref local="BidDAO"/>
	    </property>
	    <property name="goodsdao">
			<ref local="GoodsDAO" />
		</property>
		<property name="userdao">
			<ref local="UsersDAO" />
		</property>
	</bean>


4、DWR配置文件配置,这时我们需要将原先的creator="new" DWR去实例对象的,现在要改为creator="spring" 由spring注入进来。 Dwr这有个参数 <param name="beanName" value="spring对象"/> 这个可以将对象接收到。

 

Java代码 复制代码 收藏代码

  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 javascript="BidImpl" creator="spring"  
  6.             scope="application">   
  7.             <!-- <param name="class" value="com.byz.bizimpl.BidImpl" /> -->   
  8.             <!-- 将Spring中的对象给到参数 -->   
  9.             <param name="beanName" value="bidbiz" />    
  10.             <include method="add" />   
  11.         </create>   
  12.     </allow>   
  13.     <!-- 参数集合配置 -->   
  14.     <signatures>   
  15.         <![CDATA[    
  16.              import java.util.List;   
  17.              com.byz.bizimpl.BidImpl;   
  18.              BidImpl.add(List);   
  19.         ]]>   
  20.     </signatures>   
  21. </dwr>  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值