1.DWR基本原理:当开发者直接调用远程Java方法时,DWR会负责将这种调用转换成对应的Ajax请求,并使用XMLHttpRequest将请求发送到远程服务器端。当服务器处理完成后,DWR负责将处理结果传回客户端的JavaScript代码。在整个Ajax交互过程中,DWR负责数据的传递和转换。
2.编写配置文件
修改web.xml文件保证特定请求被转发给DWR的核心Servlet处理
\WEB-INF\web.xml
<!-- 配置DWR的核心Servlet -->
<servlet>
<!-- 指定DWR核心Servlet的名字 -->
<servlet-name>dwr-invoker</servlet-name>
<!-- 指定DWR核心Servlet的实现类 -->
<servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>
<!-- 指定DWR核心Servlet处于调试状态 -->
<init-param>
<param-name>debug</param-name>
<param-value>true</param-value>
</init-param>
</servlet>
<!-- 指定核心Servlet的URL映射 -->
<servlet-mapping>
<servlet-name>dwr-invoker</servlet-name>
<!-- 指定核心Servlet映射的URL -->
<url-patterm>/*</url-pattern>
</servlet-mapping>
添加dwr.xml文件,该文件负责定义Java类和JavaScript对象之间的对应关系
\WEB-INF\dwr.xml
<!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN"
"http://getahead.ltd.uk/dwr/dwr20.dtd">
<dwr>
<allow>
<!-- 判断 -->
<create creator="new" javascript="JJudgeAuditor" scope="request">
<param name="class" value="com.xxx.JudgeAuditor" />
<include method="getPaidLeave" />
</create>
<!-- 使用spring创建器,创建一个名为XXXFacade的JavaScript对象 -->
<create creator="spring" javascript="XXXFacade">
<!-- 将Spring容器中的XXXFacade创建成名为XXXFacade的对象 -->
<param name="beanName" value="XXXFacade"/>
<!-- 使用include元素定义那些方法将暴露到客户端 -->
<include method="XXXById"/>
</create>
<!-- 定义使用Bean转换器处理如下Java类 -->
<convert converter="bean" match="com.xxx.XXXDto" />
<convert converter="bean" match="com.xxx.XXXUser" />
</allow>
</dwr>
3.页面中导入JavaScript代码库
<script type="text/javascript" src="/xxx/interface/XXX.js"></script>
<script type="text/javascript" src="/xxx/engine.js"></script>
<script type="text/javascript" src="/xxx/util.js"></script>
4.编写处理类
处理类完全就是一个POJO(Plain Old Java Object)
远程处理类的方法名不要使用JavaScript保留字
远程处理类的方法不要重载
5.使用DWR的转换器
1)基本转换器
对于所有基本数据类型,包括String和BigDecimal等,DWR已经提供了简单对象的转换器,无需在dwr.xml中<allow>元素中使用<convert>元素定义
2)对象转换器
DWR默认关闭了Bean和Object转换器。Bean转换器用于完成JavaBean对象和JavaScript对象之间的转换,需要在dwr.xml中显示打开。
Object转化器通过反射来访问Java对象的属性,即Object转换器用于转换普通Java对象
推荐使用JavaBean作为远程Java方法的参数和返回值
3)数组转换器:默认是打开的
4)集合类型转换器
<convert converter="collection" match="java.util.Collection" />
<convert converter="map" match="java.util.Map" />
6.使用DWR的创建器
new,none,scripted,spring,jsf,struts,pageflow,ejb3
7.调用服务器端的方法
1)调用服务器端的通用配置
engine.js:DWR的核心JavaScript文件
util.js:DWR的工具JavaScript文件,该文件内提供了一些工具方法
2)使用回调
指定回调函数有两种做法:简单回调和使用JSON格式。如果使用简单回调,则调用远程方法的最后一个参数是函数引用,该函数就是回调函数;除此之外,还可以指定最后一个函数一个JSON格式对象,这种方式可指定更多的回调函数
function sendMessage(){
var name=document.getElementById("name").value;
//调用远程方法,cb是回调函数
hello.hello(name,cb);
}
function cb(data){
document.getElementById("show").innerHTML=data;
}
8.使用engine.js
设置调用顺序:dwr.engine.setOrdered(boolean)
设置全局超时时长:dwr.engine.setTimeout(5000);
设置全局Hook函数:dwr.engine.setPreHook(preFun);dwr.engine.setPostHook(postFun);
9.使用util.js
util.js中提供了4个基本的页面操作函数:getValue[s]()和setValue[s]()可以操作除table,list和image之外的html元素,getText()可以操作select,list。要修改页面的表格,可以使用addRows()和removeAllRows()。要修改列表可以使用addOptions()和removeAllOptions()函数
使用$()函数与Prototype中的一样
分享到:
相关推荐
该教程是学习ajax框架的标准参考书籍,长期以来帮助了数以万计的初学者。
详细讲述DWR框架的用法,及配置文件的意义,绝对是一本好书
《疯狂ajax讲义》(第三版) 李刚的疯狂系列大家应该都懂的(PDF格式,共624页...第九章 DWR框架详解 第十章 基于DWR的应用:即时消息系统 第十一章 基于Ext JS的应用:简易Blog系统 第十二章 Ajax实例:电子拍卖系统
《疯狂ajax讲义》(第三版) 李刚的疯狂系列大家应该都懂的(PDF格式,共624页...第九章 DWR框架详解 第十章 基于DWR的应用:即时消息系统 第十一章 基于Ext JS的应用:简易Blog系统 第十二章 Ajax实例:电子拍卖系统
《疯狂ajax讲义》(第三版) 李刚的疯狂系列大家应该都懂的(PDF格式,共624页...第九章 DWR框架详解 第十章 基于DWR的应用:即时消息系统 第十一章 基于Ext JS的应用:简易Blog系统 第十二章 Ajax实例:电子拍卖系统
《疯狂ajax讲义》(第三版) 李刚的疯狂系列大家应该都懂的(PDF格式,共624页...第九章 DWR框架详解 第十章 基于DWR的应用:即时消息系统 第十一章 基于Ext JS的应用:简易Blog系统 第十二章 Ajax实例:电子拍卖系统
《疯狂ajax讲义》(第三版) 李刚的疯狂系列大家应该都懂的(PDF格式,共624页...第九章 DWR框架详解 第十章 基于DWR的应用:即时消息系统 第十一章 基于Ext JS的应用:简易Blog系统 第十二章 Ajax实例:电子拍卖系统
《疯狂ajax讲义》(第三版) 李刚的疯狂系列大家应该都懂的(PDF格式,共624页...第九章 DWR框架详解 第十章 基于DWR的应用:即时消息系统 第十一章 基于Ext JS的应用:简易Blog系统 第十二章 Ajax实例:电子拍卖系统
《疯狂ajax讲义》(第三版) 李刚的疯狂系列大家应该都懂的(PDF格式,共624页...第九章 DWR框架详解 第十章 基于DWR的应用:即时消息系统 第十一章 基于Ext JS的应用:简易Blog系统 第十二章 Ajax实例:电子拍卖系统
dwr回调函数里面怎么得到list信息,这儿有详解的办法
ajax框架:dwr》实战(包括整合) DWR 快速上手 DWR 综合实践 DWR 详解 DWR +spirng+hibernate 实战
这是一份基于java代码的异步请求框架,也是当下非常流行的框架,其在js上操作对象就像在java后台操作对象一样简单,体验一下吧。
对ajax中dwr,prototype框架的详细讲解
7.DWR快速上手 ......................................................................................................................................................................3 1.DWR 简介 . . . ....
13.7 Ext.ux.DWR 13.7.1 Ext.data.DwrProxy 13.7.2 Ext.data.DWRTreeLoader 13.7.4 Web服务端配置 13.7.5 服务层接口 第14章 ExtJS扩展 14.1 利用Ext.extend实现继承 14.2 与ExtJS扩展相关的预备知识 14.2.1...
1.4 ssh 2组合框架—门户网站开发之首选 28 1.4.1 mvc混血宠儿struts 2 28 1.4.2 幕后的财政部长spring 2.5 30 1.4.3 orm中间件香馍馍hibernate 3.2 31 1.5 小结 32 第2章 mvc混血宠儿struts 2 33 2.1 初识mvc...
1.13 XML 绑定框架 146 1.14 页面模板系统 148 1.15 不用 XML 的响应数据 149 1.16 JavaScript 对象标注 150 1.17 比较序列化技术 153 第 14部分:面向 Java 开发人员的 Ajax 结合 Direct Web Remoting 使用 ...
内部包含: ajax官方文档 AJAX WEB2.0技术详解.pdf AJAX表格分页模板.doc ajax专家开发手记 如何使用Dojo的DatePicker控件制作联动...ajax框架:dwr 实战.pdf 突破JavaScript编程实例五十讲.rar JavaScript源代码集.rar
13.7 Ext.ux.DWR 13.7.1 Ext.data.DwrProxy 13.7.2 Ext.data.DWRTreeLoader 13.7.4 Web服务端配置 13.7.5 服务层接口 第14章 ExtJS扩展 14.1 利用Ext.extend实现继承 14.2 与ExtJS扩展相关的预备知识 14.2.1...
ant配置文件实例详解 build.xml 代码 xml version="1.0" encoding="UTF-8"?> <!-- name:对应工程的名字;default:需要的缺省任务(运行"ant"不指明任务时执行的任务) --> by duzn 2007-04-02 回复 (0) Antenna与j2me...