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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值