`
hong_1121
  • 浏览: 53250 次
  • 来自: ...
社区版块
存档分类
最新评论
阅读更多

11.1.2  DWR使用入门

有两种方式可以开始DWR的应用。一种是直接从其官方网站下载DWRWeb应用示范包,这是一个war的部署包,从中可以对DWR的应用效果及其部署方式有一个大概的了解。不过这种方式无法详细掌握如何将DWRWeb应用程序紧密集成。另外一种方式是根据DWR官方开发文档的讲解,通过一步步的部署和配置,将DWR集成到Web应用程序中。本节通过简单的示范和一个例子来讲述DWR的部署和集成。

DWR用一个Java Servlet来处理请求并将响应结果发送给浏览器,这个Java Servlet需要加入到Java Web应用程序的部署描述文件web.xml。其次,它通过一个自定义的部署描述文件dwr.xml来控制Java对象与Javascript的转化。下面通过五步简单的配置,将DWR部署到2.4节创建的开发项目中。

第一步:安装jar开发包。

DWR官方网站http://www.getahead.ltd.uk/dwr/下载DWR的开发包。这里采用DWR1.0,它是一个简单的名为dwr1.0.jar开发包。将这个开发包放到{APPLICATION_ WEB_HOME} \WEB-INF\lib目录下。如果使用DWR1.1,则下载的应该是DWR1.1的开发包。这个开发包中包含了DWR运行所需的全部Java类及相应的APIdwr1.0.jar也可以从随书光盘jar lib目录中找到。

第二步:修改web.xml,添加Servlet映射。

修改{APPLICATION_WEB_HOME}\WEB-INF目录下的web.xml,将下列代码添加到web.xml的适当位置。

例程11-1  web.xml添加DWR映射

<servlet>

  <servlet-name>dwr-invoker</servlet-name>

  <display-name>DWR Servlet</display-name>

  <servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>

  <init-param>

     <param-name>debug</param-name>

     <param-value>true</param-value>

  </init-param>

</servlet>

 

<servlet-mapping>

  <servlet-name>dwr-invoker</servlet-name>

  <url-pattern>/dwr/*</url-pattern>

</servlet-mapping>

<servlet>映射部分应该紧随web.xml中的其他<servlet>映射,<servlet-mapping>则紧随<servlet-mapping>部分。

这段部署描述告诉Web应用程序,全部以“/dwr/”起始的URL所指向的请求都交给uk.ldt.getahead.dwr.DWRServlet这个Java Servlet来处理。

第三步:创建dwr.xml

{APPLICATION_WEB_HOME}\WEB-INF录下创建dwr.xml部署描述文件,其代码例程11-2所示。

例程11-2  DWR部署描述文件dwr.xml

<!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="JDate">

      <param name="class" value="java.util.Date"/>

    </create>

  </allow>

</dwr>

这个XML文档中用到了其对应的DTD文档,顶部的文档声明指明当前用到的是DWR1.0版本。如果使用DWR1.1,则应该相应地修改这个XML文档的文档声明。

这个部署描述文件定义什么样的Java 类可以被DWR应用创建并通过Javascript远程调用。在上面的部署描述中,定义了可以被DWR创建的Javajava.util.Date,并给这个类赋予一个Javascript名称JDate。通过修改dwr.xml,也可以将自定义的Java类暴露给Javascript远程调用。

需要注意的是,dwr部署描述为远程Java类拟定的Javascript名称还是有些限制的。

避免使用Javascript关键字或者保留字,因为这些用Javascript关键字或者保留字命名的方法会自动执行。大部分的Javascript关键字或者保留字也是Java的关键字或者保留字,比如,“try()”不是一个合法的命名。不过还是有一部分的Javascript关键字或者保留字在Java中不被限制,比如“delete()”。

避免使用方法重载。有时候,在调用这些重载的方法会引起麻烦,因为Javascript没有像Java那样的包命名机制来支持方法重载。

第四步:测试URL,查看部署效果。

在浏览器地址栏中输入http://localhost:8080/ajaxlab/dwr,其页面效果如图11-2所示。通常,这个页面会显式在dwr.xml部署描述文件中定义的全部Java类,并且显式可以查看所有其可供远程调用的方法的列表的链接。这个页面由DWR动态创建。在本例中,页面上有一个JDate的链接,列出暴露给DWRJDate类可供Javascript远程调用的方法。

11-2  DWR部署效果

单击“JDate”链接,查看Javascript能够调用的java.util.JDate类的方法,其效果如图11-3所示。单击每个方法后面的“Execute”按钮,尝试执行这些方法。

11-3  能够被Javascript远程调用的方法

第五步:使用Javascript远程调用Java类的方法。

java.util.Date类的相关方法已经暴露出来供Javascript远程调用。将以下的Javascript引用代码添加到JSP或者HTML文件中,就可以在JSP或者HTML文件中直接调用第四步配置所暴露的java.util.Date类的方法了。

<script language="javascript" src="/ajaxlab/dwr/interface/JDate.js"> </script>

<script language="javascript" src='/ajaxlab/dwr/engine.js'></script>

<script language="javascript" src='/ajaxlab/dwr/util.js'></script>

例程11-3展示了这个过程,调用java.util.Date类的toString()方法将当前时间打印出来。这个例子包含一个普通按钮控件和两个Javascript函数,其中一个函数doTest通过JDate.toString()调用,取得java.util.Date所表示的当前时间。第二个函数responseDate将第一个函数所取得的当前时间以弹出窗口的形式显式出来。第二个函数的名称作为第一个函数的参数,这与第5章所说的回调函数类似。具体代码如例程11-3所示,其运行效果如图11-4示。

例程11-3  sample12_1.jsp

<%@ page contentType="text/html; charset=gb2312" errorPage="" %>

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=gb2312">

<title>Ch11--DWR使用入门</title>

<script language="javascript" src="/ajaxlab/dwr/interface/JDate.js"></s cript>

<script language="javascript" src='/ajaxlab/dwr/engine.js'></script>

<script language="javascript" src='/ajaxlab/dwr/util.js'></script>

<script language="javascript">

function doTest() {

    JDate.toString(load);

}

function load(data) {

    window.alert("Current Time"+data);

}

</script>

</head>

 

<body>

<input type="button" name="count" value="cont" onClick="doTest()">

</body>

</html>

11-4  调用JDateJavascript方法显示当前时间

通过简单的配置,Javascript可以自由地远程调用Java对象的方法。接下来看看DWR是怎么实现上述设计的。DWR使用dwr.xml部署描述文档来定义Javascript对象和Java类之间的映射转化。首先了解一下dwr.xml这个DWR定义的部署描述文件的结构。从dwr.xml对应的DTDhttp://www.getahead.ltd.uk/dwr/dwr10.dtd,版本1.0)文件中很容易知道dwr.xml的具体结构。从DWR的官方网站可以找到关于这个DTD的说明文档(http://get ahe ad.ltd.uk/dwr-demo/dtddoc/)。

所有部署描述文件的顶级根元素为dwr,其按照顺序可以包含以下三个子元素之一。

  init:此元素定义那些在应用程序启动时作为DWR运行库所需的类自动加载并初始化的类。

  allow:此元素定义那些允许客户端Javascript远程调用的Java类。

  signatures:此元素签名必要的方法,当使用集合的时候,为转换器指定Java反射机制外的类别信息。

11-1显示了dwr.xml的各个组成元素及其父元素、属性、子元素、用途等信息。

11-1  dwr.xml组成元素及其属性和用途

元素名称

属性名称

  

   

dwr

 

 

dwr.xml文档的根元素

init

 

dwr

定义那些在应用程序启动时作为DWR运行库所需的类自动加载并初始化的类

creator

 

init

定义供Javascript调用的新建对象的方法,即对象的构造方法

 

id

creator

用来惟一标识creator所创建的对象。必需属性

 

class

creator

应用creator元素定义的Java对象的完整名称。必需属性

converter

 

init

定义Javascript对象和Java对象之间新的转换方法。有些类有默认的转换机制,但有些类需要自定义转换机制

 

id

converter

用来惟一标识converter所创建的对象。必需属性

 

class

converter

应用converter元素定义的Java对象的完整名称。必需属性

allow

 

dwr

定义那些允许客户端Javascript远程调用的Java

create

 

allow

定义允许创建的Java类,并为其指定一个Javascript名称,并定义DWR应当如何获得要进行远程的类的实例

 

creator

create

create元素所使用的构造方法名称。必需属性

续表 

元素名称

属性名称

  

   

 

javascript

create

Java类暴露给浏览器调用的Javascript名称。必需属性

 

scope

create

create元素所创建的类的可用范围,默认为page。可选属性

param

 

create

指定create元素所需要的参数,比如其允许创建的Java类的名称

 

分享到:
评论

相关推荐

    dwr基础_dwr兼容三大框架+视频

    在这个“dwr基础_dwr兼容三大框架+视频”资源中,重点是介绍如何在MyEclipse环境中使用DWR与Spring、Struts2和Hibernate这三大主流Java框架集成。这三大框架分别是: 1. **Spring**:是一个全面的Java应用框架,...

    DWR基础教程 开发案例

    **DWR基础教程 开发案例** DWR,全称Direct Web Remoting,是一个开源的Java库,用于在Web应用程序中实现Ajax(异步JavaScript和XML)功能。它简化了JavaScript和服务器端Java代码之间的交互,使得开发者能够在...

    dwr基础范例 MyEclipse

    总结来说,"dwr基础范例 MyEclipse"这个示例涵盖了DWR的基本使用,包括在MyEclipse中的配置、Java方法的暴露、JavaScript的调用以及与数据库的交互。通过学习这个示例,开发者可以快速掌握DWR在实际项目中的应用,...

    dwr基础学习书籍新手必备

    ### DWR基础学习知识点详解 #### 一、DWR概览与入门 DWR(Direct Web Remoting)是一种简化客户端JavaScript调用服务器端Java方法的技术,它使得远程过程调用(RPC)变得像本地调用一样简单。DWR通过AJAX技术在...

    Ajax-dwr基础学习资料

    **Ajax-dwr基础学习资料** Ajax (Asynchronous JavaScript and XML) 是一种在无需重新加载整个网页的情况下更新部分网页的技术,而Direct Web Remoting (DWR) 是一个Java库,它使得在JavaScript和Java之间进行交互...

    DWR基础教程及配置.doc

    以下是对DWR基础教程及配置的详细解释: **1. 安装DWR** 要开始使用DWR,首先需要将`dwr.jar`文件添加到你的web应用的`WEB-INF/lib`目录下。这个库包含了DWR运行所需的类和资源。确保`dwr.jar`与其他必要的库一起...

    DWR基础应用教程direct.ppt

    DWR(Direct Web Remoting)是一种Java开源库,专门用于帮助开发者在Web应用程序中实现AJAX(Asynchronous JavaScript and XML)技术。它使得JavaScript方法能够直接调用服务器端的Java方法,克服了Java方法同步调用...

    java之ajax开发---dwr基础(适合基础开发ajax)

    【DWR(Direct Web Remoting)基础讲解】 DWR(Direct Web Remoting)是一个开源的Java库,它允许Web应用程序在客户端(通常是浏览器)和服务器之间进行实时的、双向的通信,无需使用复杂的插件或框架。DWR使得Java...

    dwr 基础教程适合初学者阅读 (是一个例子)

    这个基础教程是为初学者设计的,通过实例来讲解DWR的使用。 DWR的核心概念包括以下几个部分: 1. **Reverse Ajax**:DWR实现了Reverse Ajax,即由服务器向客户端推送数据,打破了传统的Web应用中客户端发起请求、...

    DWR 教程 中文API DWR.xml配置文件说明 DWR学习笔记

    首先,"DWR学习笔记"提供了对DWR基础概念、核心功能以及实际应用的概述。这些笔记可能包含了DWR的基本架构,如它如何通过AJAX技术实现实时的Web交互,以及如何创建和调用服务器端的Java方法。 "DWR中文API"是DWR库...

    DWR网页聊天例子

    1. **DWR基础** DWR的核心功能是提供了一种安全、高效的机制,使得JavaScript可以调用服务器上的Java方法。它通过在服务器端部署一个Servlet来处理这些请求,并将结果以JSON或XML格式返回给前端。DWR提供了自动化的...

    dwr.rar_dwr_dwr ajax_dwr 实现 联动 标签

    1. **DWR基础**: DWR的核心组件包括一个服务器端的Servlet(DWR Engine)和一组JavaScript库。Servlet处理来自客户端的AJAX请求,调用服务器上的Java方法,并将结果返回到JavaScript环境中。JavaScript库提供了...

    dwr实战,Practical DWR 2 Projects,PDF书籍及源码

    1. **DWR基础**:介绍DWR的基本概念,如Reverse Ajax、远程对象(Remote Objects)以及如何在项目中集成DWR框架。 2. **安装与配置**:讲解如何在Web应用程序中配置DWR,包括添加依赖、配置XML文件(dwr.xml)以及...

    dwr+从服务端推送消息到网页

    1. **DWR基础概念** - **Remoting**:远程方法调用,即允许客户端JavaScript代码直接调用服务器端的Java方法,使得Web应用可以实现类似桌面应用的即时反馈。 - **Direct**:直接性,DWR通过JSON或XML格式在HTTP...

    dwr 实现推技术 实例

    ### DWR基础 1. **反向Ajax(Reverse Ajax)**:DWR的核心功能之一是实现反向Ajax,即服务器可以主动向客户端推送数据,而不仅仅是响应客户端的请求。这使得Web应用能够实现类似桌面应用的即时更新效果。 2. **...

    dwr开发文档

    #### 二、DWR基础知识 - **DWR的基本概念**: - **Direct Web Remoting**:允许浏览器端的JavaScript直接调用服务器端的Java方法,从而实现远程调用的效果。 - **AJAX**:异步JavaScript和XML技术,用于创建动态...

    dwr中文文档,dwr例子

    1. **DWR基础概念**:DWR的核心组件包括一个服务器端的引擎(DWR Engine),一个处理客户端请求的Servlet(DWRServlet),以及一系列JavaScript库,如Util、Create、Call等,用于在客户端进行AJAX调用。 2. **DWR与...

    dwr消息推送完整示例

    **一、DWR基础** 1. **安装与配置** 在开始之前,确保你的项目中已经包含了DWR的JAR文件。将它们添加到项目的类路径中,并在Web应用的`WEB-INF/dwr.xml`配置文件中定义允许的远程方法。这通常包括设置安全策略、...

    DWR验证用户名是否存在的例子(JAVA)

    1. **DWR基础**: DWR的核心理念是提供一种安全、简单的方式来调用服务器上的Java方法,并在客户端(通常是浏览器中的JavaScript)中得到结果。这使得开发者可以在不刷新整个页面的情况下更新部分网页内容,提升...

Global site tag (gtag.js) - Google Analytics