`
AllenHU0320
  • 浏览: 83026 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

DWR框架详解

阅读更多

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中的一样

分享到:
评论

相关推荐

    dwr技术详解.doc

    该教程是学习ajax框架的标准参考书籍,长期以来帮助了数以万计的初学者。

    DWR框架开发详解从入门到精通

    详细讲述DWR框架的用法,及配置文件的意义,绝对是一本好书

    《疯狂Ajax讲义(第3版).part4

    《疯狂ajax讲义》(第三版) 李刚的疯狂系列大家应该都懂的(PDF格式,共624页...第九章 DWR框架详解 第十章 基于DWR的应用:即时消息系统 第十一章 基于Ext JS的应用:简易Blog系统 第十二章 Ajax实例:电子拍卖系统

    《疯狂Ajax讲义(第3版).part1

    《疯狂ajax讲义》(第三版) 李刚的疯狂系列大家应该都懂的(PDF格式,共624页...第九章 DWR框架详解 第十章 基于DWR的应用:即时消息系统 第十一章 基于Ext JS的应用:简易Blog系统 第十二章 Ajax实例:电子拍卖系统

    《疯狂Ajax讲义(第3版).part7

    《疯狂ajax讲义》(第三版) 李刚的疯狂系列大家应该都懂的(PDF格式,共624页...第九章 DWR框架详解 第十章 基于DWR的应用:即时消息系统 第十一章 基于Ext JS的应用:简易Blog系统 第十二章 Ajax实例:电子拍卖系统

    《疯狂Ajax讲义(第3版).part3

    《疯狂ajax讲义》(第三版) 李刚的疯狂系列大家应该都懂的(PDF格式,共624页...第九章 DWR框架详解 第十章 基于DWR的应用:即时消息系统 第十一章 基于Ext JS的应用:简易Blog系统 第十二章 Ajax实例:电子拍卖系统

    《疯狂Ajax讲义(第3版).part2

    《疯狂ajax讲义》(第三版) 李刚的疯狂系列大家应该都懂的(PDF格式,共624页...第九章 DWR框架详解 第十章 基于DWR的应用:即时消息系统 第十一章 基于Ext JS的应用:简易Blog系统 第十二章 Ajax实例:电子拍卖系统

    《疯狂Ajax讲义(第3版).part6

    《疯狂ajax讲义》(第三版) 李刚的疯狂系列大家应该都懂的(PDF格式,共624页...第九章 DWR框架详解 第十章 基于DWR的应用:即时消息系统 第十一章 基于Ext JS的应用:简易Blog系统 第十二章 Ajax实例:电子拍卖系统

    《疯狂Ajax讲义(第3版).part5

    《疯狂ajax讲义》(第三版) 李刚的疯狂系列大家应该都懂的(PDF格式,共624页...第九章 DWR框架详解 第十章 基于DWR的应用:即时消息系统 第十一章 基于Ext JS的应用:简易Blog系统 第十二章 Ajax实例:电子拍卖系统

    dwr回调函数得到后台list

    dwr回调函数里面怎么得到list信息,这儿有详解的办法

    ajax框架:dwr》实战(包括整合)

    ajax框架:dwr》实战(包括整合) DWR 快速上手 DWR 综合实践 DWR 详解 DWR +spirng+hibernate 实战

    dwr 实例详解

    这是一份基于java代码的异步请求框架,也是当下非常流行的框架,其在js上操作对象就像在java后台操作对象一样简单,体验一下吧。

    ajax中各种框架的应用和详解

    对ajax中dwr,prototype框架的详细讲解

    ajax框架:dwr与ext实战

    7.DWR快速上手 ......................................................................................................................................................................3 1.DWR 简介 . . . ....

    精通JS脚本之ExtJS框架.part2.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...

    低清版 大型门户网站是这样炼成的.pdf

    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...

    Ajax详解.rar

    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官方文档 AJAX WEB2.0技术详解.pdf AJAX表格分页模板.doc ajax专家开发手记 如何使用Dojo的DatePicker控件制作联动...ajax框架:dwr 实战.pdf 突破JavaScript编程实例五十讲.rar JavaScript源代码集.rar

    精通JS脚本之ExtJS框架.part1.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...

    iuhyiuhkjh908u0980

    ant配置文件实例详解 build.xml 代码 xml version="1.0" encoding="UTF-8"?&gt; &lt;!-- name:对应工程的名字;default:需要的缺省任务(运行"ant"不指明任务时执行的任务) --&gt; by duzn 2007-04-02 回复 (0) Antenna与j2me...

Global site tag (gtag.js) - Google Analytics