1.当JSP页面的Ajax调用业务层方法时,业务需要DAO层对象,而DAO层对象我们是通过spring来注入的,如果我们直接用DWR暴露给js的对象去调用业务的方法时,就会出现错误。因为业务类DAO对象是空的。这时我们就要通过DWR整合的SPRING的形式来加载对象。
2、要用到SRPING的东西,就是必须加载SPRING的配置文件(applicationContext.xml),在这里我们通过服务启动时去加载,所以要配置修改web.xml文件。在原来的基础上添加以下配置:
- <!--- 这个就是用来加载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>
<!--- 这个就是用来加载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对象
- <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>
<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对象"/> 这个可以将对象接收到。
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN" "http://getahead.org/dwr/dwr20.dtd">
- <dwr>
- <allow>
- <create javascript="BidImpl" creator="spring"
- scope="application">
- <!-- <param name="class" value="com.byz.bizimpl.BidImpl" /> -->
- <!-- 将Spring中的对象给到参数 -->
- <param name="beanName" value="bidbiz" />
- <include method="add" />
- </create>
- </allow>
- <!-- 参数集合配置 -->
- <signatures>
- <![CDATA[
- import java.util.List;
- com.byz.bizimpl.BidImpl;
- BidImpl.add(List);
- ]]>
- </signatures>
- </dwr>