今天弄了下spring2跟dwr2的整合,果然轻巧。
在此记录下具体的整合步骤,以供日后能够快速上手。
1、将dwr.jar(dwr2)放到应用的/WEB-INF/lib目录下。
2、配置web.xml,增加如下代码:
<!-- 加载DWR start -->
<servlet>
<servlet-name>dwr-invoker</servlet-name>
<servlet-class>
org.directwebremoting.spring.DwrSpringServlet
</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dwr-invoker</servlet-name>
<url-pattern>/dwr/*</url-pattern>
</servlet-mapping>
<!-- 加载DWR end -->
3、在applicationContext.xml中增加如下代码:
<bean id="exampleDao" class="com.seagull.module.example.dao.impl.ExampleDaoImpl">
<dwr:remote javascript="exampleDao"></dwr:remote>
</bean>
在此说明下:exampleDao 就是bean名而已,这个可以随便取,class对应具体的一个处理类。
<dwr:remote javascript="exampleDao"></dwr:remote>中的exampleDao是把实例转换成javascript后的命名,页面中通过exampleDao.getXXX()就可以调用com.seagull.module.example.dao.impl.ExampleDaoImpl中的方法了(我想应该可以默认调用到所有的公共方法),当然我们也可以只暴露某个方法或者几个方法给客户端,这样就需要编变化下,在<dwr:remote>下加入<dwr:include method="getInfo" />这样就暴露了getInfo方法给客户端。
4、页面中如何调用?首先在页面中需要加入下面代码:
<%
String path = request.getContextPath();
%>
<script type='text/javascript' src='<%=path%>/dwr/util.js'></script>
<script type='text/javascript' src='<%=path%>/dwr/engine.js'></script>
<script type='text/javascript' src='<%=path%>/dwr/interface/exampleDao.js'></script>
function enter(){
// 下面就是具体的调用服务端方法
exampleDao.getInfo();
}