公司用的开源框架是webwork、spring、ibatis和freemarker以及dwr,平时后台应用很少用dwr调用。现在总结一下dwr在项目中使用的步骤:
1、相关jar包需要加入到项目中
2、在web.xml配置响应dwr请求的servlet
<servlet>
<servlet-name>dwr-invoker</servlet-name>
<servlet-class> org.directwebremoting.servlet.DwrServlet </servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>allowGetForSafariButMakeForgeryEasier</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>logLevel</param-name>
<param-value>warn</param-value>
</init-param>
<init-param>
<param-name>crossDomainSessionSecurity</param-name>
<param-value>false</param-value>
</init-param>
<init-param>
<param-name>allowScriptTagRemoting</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>/sltdwr/*</url-pattern>
</servlet-mapping>
3、在分层的架构中实现每层的业务逻辑
4、新建dwr.xml配置文件,添加客户端可调用服务器端的对象
<create creator="spring" javascript="productGradeAction">
<param name="beanName" value="productGradeAction" />
</create>
<convert converter="bean" match="com.b2b.app.portal.webapp.model.productgrade.ProductGrade"/>
若需要在客户端的回调函数中使用对象,必须配置convert的信息。
5、在配置文件对每层涉及的对象进行配置,主要用的是spring的ioc,以下是service层例子代码:
<bean id="productGradeAction"
class="com.b2b.app.portal.webapp.action.productgrade.ProductGradeAction">
<property name="productGradeManager" ref="productGradeManager"></property>
</bean>
<bean id="productGradeManager" parent="txProxyTemplate">
<property name="target">
<bean class="com.b2b.app.portal.service.impl.productgrade.ProductGradeManagerImpl"
autowire="byName">
<property name="productGradeDao" ref="productGradeDao"/>
</bean>
</property>
</bean>
6、在js文件中用上面的productGradeAction对象对服务器端进行异步调用
function getAllCountByPid(pid){
productGradeAction.getAllCountByPid(pid, showAllCountAndAvgGrade);
}
其中showAllCountAndAvgGrade为回调函数,在此可以对客户端页面的展示进行处理
7、在客户端请求的页面中加入dwr的相关js脚本
<script type="text/javascript" language="javascript"
src="http://192.168.1.42:8081/portal/static/js/ratingsys.js"></script>
<script type="text/javascript" src="${model.context?
if_exists}/sltdwr/interface/productGradeAction.js"></script>
<script type="text/javascript" src="${model.context?if_exists}/sltdwr/engine.js"></script>
<script type="text/javascript" src="${model.context?if_exists}/sltdwr/util.js"></script>
8、可以用http://192.168.1.42:8081/portal/stldwr这个路径来测试我们的dwr调用是否配置成功