动网论坛,站长建站首选,国内使用量最多的论坛软件 动网论坛官方技术讨论区 站长工具 申请属于您自己的免费论坛
首页 | 新闻资讯 | 网站运营 | 网络编程 | 数据库 | 服务器 | 网页设计 | 图像媒体 | 网络应用 | 搜索优化 | 资源下载 | 动网主机 | DVBOX
    本站内  互联网 ASP论坛  ASP.Net论坛  PHP论坛
   网络应用 → 阅读文章

 结合Direct Web Remoting使用AJAX(1)

作者来源:51CTO.com整理  
阅读 数 322 人次 , 2006-3-18 11:26:00 

DWR 简介

从最简单的角度来说,DWR 是一个引擎,可以把服务器端 Java 对象的方法公开给 JavaScript 代码。使用 DWR 可以有效地从应用程序代码中把 Ajax 的全部请求-响应循环消除掉。这意味着客户端代码再也不需要直接处理 XMLHttpRequest 对象或者服务器的响应。不再需要编写对象的序列化代码或者使用第三方工具才能把对象变成 XML。甚至不再需要编写 servlet 代码把 Ajax 请求调整成对 Java 域对象的调用。

DWR 是一个开放源码的使用 Apache 许可协议的解决方案,它包含服务器端 Java 库、一个 DWR servlet 以及 JavaScript 库。虽然 DWR 不是 Java 平台上唯一可用的 Ajax-RPC 工具包,但是它是最成熟的,而且提供了许多有用的功能。

DWR 是作为 Web 应用程序中的 servlet 部署的。把它看作一个黑盒子,这个 servlet 有两个主要作用:首先,对于公开的每个类,DWR 动态地生成包含在 Web 页面中的 JavaScript。生成的 JavaScript 包含存根函数,代表 Java 类上的对应方法并在幕后执行 XMLHttpRequest。这些请求被发送给 DWR,这时它的第二个作用就是把请求翻译成服务器端 Java 对象上的方法调用并把方法的返回值放在 servlet 响应中发送回客户端,编码成 JavaScript。DWR 还提供了帮助执行常见的用户界面任务的 JavaScript 工具函数。

关于示例

在更详细地解释 DWR 之前,我要介绍一个简单的示例场景。像在前一篇文章中一样,我将采用一个基于在线商店的最小模型,这次包含一个基本的产品表示、一个可以包含产品商品的用户购物车以及一个从数据存储查询产品的数据访问对象(DAO)。Item 类与前一篇文章中使用的一样,但是不再实现任何手工序列化方法。图 1 说明了这个简单的设置:

图 1. 说明 Cart、CatalogDAO 和 Item 类的类图

在这个场景中,我将演示两个非常简单的用例。第一,用户可以在目录中执行文本搜索并查看匹配的商品。第二,用户可以添加商品到购物车中并查看购物车中商品的总价。

实现目录

DWR应用程序的起点是编写服务器端对象模型。在这个示例中,我从编写 DAO 开始,用它提供对产品目录数据存储的搜索功能。CatalogDAO.java 是一个简单的无状态的类,有一个无参数的构造函数。清单 1 显示了我想要公开给 Ajax 客户的 Java 方法的签名:

清单 1. 通过 DWR 公开的 CatalogDAO 方法

 
/** 
 * Returns a list of items in the catalog that have  
 *  names or descriptions matching the search expression 
 * @param expression Text to search for in item names  
 *  and descriptions  
 * @return list of all matching items 
 */ 
public List<Item> findItems(String expression); 

/** 
 * Returns the Item corresponding to a given Item ID 
 * @param id The ID code of the item 
 * @return the matching Item 
 */ 
public Item getItem(String id); 

接下来,我需要配置 DWR,告诉它 Ajax 客户应当能够构建 CatalogDAO 并调用这些方法。我在清单 2 所示的 dwr.xml 配置文件中做这些事:

清单 2. 公开 CatalogDAO 方法的配置

 
<!DOCTYPE dwr PUBLIC 
  "-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN" 
  "http://www.getahead.ltd.uk/dwr/dwr10.dtd"> 
<dwr> 
  <allow> 
    <create creator="new" javascript="catalog"> 
      <param name="class"  
        value="developerworks.ajax.store.CatalogDAO"/> 
      <include method="getItem"/>  
      <include method="findItems"/>  
    </create>  
    <convert converter="bean"  
      match="developerworks.ajax.store.Item"> 
      <param name="include"  
        value="id,name,description,formattedPrice"/> 
    </convert> 
  </allow> 
</dwr> 

dwr.xml 文档的根元素是 dwr。在这个元素内是 allow 元素,它指定 DWR 进行远程的类。allow 的两个子元素是 create 和 convert。




  
 本文Tagsajax  
 收藏本文  打印本文  论坛讨论  关闭窗口
· 上一篇:AJAX技术开发“Back”按钮问题的应用程序
· 下一篇:在AJAX开发中集成数据库技术(1)
· 病毒PK网络安全厂商
· 利用IP地址欺骗突破防火墙技术解析
· 用组策略部署Windows防火墙
· 黑客攻防技术内幕-安全防入侵与防病毒基础(5)
· 阻击无线游侠—802.11家族安全浅析



关于本站 | 联系我们 | 业务合作 | 客户案例 | 诚聘英才 | 广告合作 | 收藏本站
海口动网先锋网络科技有限公司版权所有
Copyright © 2000 - 2006 Cndw.Com
中华人民共和国电信与信息服务业务经营许可证编号 琼 ICP 020077