今天做了一个小例子,需要使用无刷新技术,因此选择了dwr技术,但是在写代码的过程中,没有与spring整合,因此注入service层对象时报错为空,因此dwr需要与spring整合在一起,才能访问dao层的方法。
1.配置web.xml
<!-- dwr配置 -->
<servlet>
<servlet-name>dwr-invoker</servlet-name>
<servlet-class>
org.directwebremoting.servlet.DwrServlet
</servlet-class>
<init-param>
<param-name>config-dwr</param-name>
<param-value>/WEB-INF/dwr.xml</param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>false</param-value>
</init-param>
<init-param>
<param-name>activeReverseAjaxEnabled</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>
initApplicationScopeCreatorsAtStartup
</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>maxWaitAfterWrite</param-name>
<param-value>500</param-value>
</init-param>
<init-param>
<param-name>crossDomainSessionSecurity</param-name>
<param-value>false</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dwr-invoker</servlet-name>
<url-pattern>/dwr/*</url-pattern>
</servlet-mapping>
2.配置dwr.xml
<?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>
<!-- List到页面上,就是数组。Map到页面上,就这样去rtu["字段名称"],如过从数据库中查询到的,记得字段名称大写 -->
<convert converter="array" match="*"/>
<convert converter="array" match="[[*"/>
<convert converter="collection" match="java.util.Collection"/>
<!-- 传统的DWR -->
<create javascript="roleService" creator="spring">
<param name="beanName" value="roleServiceImpl" />
</create>
<convert converter="bean" match="com.xby.bean.Role"> </convert>
</allow>
<signatures>
<![CDATA[
import java.util.Map ;
import java.util.List ;
]]>
</signatures>
</dwr>
3.加入dwr.jar到WEB-INF的lib文件夹下。
4.引用service层的方法
<%--ajax读写数据 --%>
<script type="text/javascript" src="<s:url value='/dwr/util.js'/>"></script>
<script type="text/javascript" src="<s:url value='/dwr/engine.js'/>"></script>
<script type="text/javascript" src="<s:url value='/dwr/interface/roleService.js'/>"></script>
接下来就可以访问dao层的方法了。