`
高级java工程师
  • 浏览: 410538 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

DWR(学习一)

    博客分类:
  • DWR
阅读更多
DWR(Direct Web Remoting),能够为现有的基于JavaScript/Java的WEB应用轻松加入AJAX功能。
通过DWR,可以在JavaScript里简单地使用[Java类名.方法名]的形式直接调用Java里的方法。
DWR主要特点:
1,异步调用。除了支持从JavaScript到Java方法(浏览器到服务器)的异步调用之外,从DWR2.0开始,DWR开始支持从服务器到JavaScript的反转异步调用功能(ReversedAJAX)。
2,与其他框架的依存度低,可简单与Spring,Struts,WebWork,JSF,Hibernate,Beehive,EJB3,Seasar2等框架集成。
3,可测试性好
4,多浏览器支持
5,支持免dwr.xml配置annotation功能。
6,成熟健壮,有丰富的帮助文档资料。


License:Apache Software License v2.

DWR官方首页:
http://getahead.org/dwr/



DWR(Direct Web Remoting)是一个WEB Ajax轻量级框架。本文,介绍DWR2.0.3的安装与使用。

DWR是什么



DWR(Direct Web Remoting)是一个WEB Ajax轻量级框架。它可以为WEB应用轻松加入Ajax功能,使用DWR,可以简单地从JavaScript调用Java中定义的方法。

DWR - 轻量级AJAX框架:Easy Ajax for Java


本文,介绍DWR2.0.3的安装与使用。
-除了部分差异之外,DWR1.x的安装与使用同DWR2基本一样。

测试环境:
DWR  Version:DWR Version 2.0.3
Web服务器:Tomcat 5.5
OS:Windows XP


开始本文之前,请确认您已经安装好了至少一款WEB服务器。
有关WEB服务器的安装,可以参考:
Linux 环境下 Web服务器Tomcat的安装与使用入门
Windows 环境下 Web服务器Tomcat的安装与使用入门

DWR 2 的安装


首先,从DWR的官方网站 下载DWR的最新稳定版(这里,以dwr-2.0.3为例加以说明)。
 
dwr.jar
              实际上的开发需要使用到的文件
dwr.war
              dwr sample项目
dwr-2.0.3-src.zip
              dwr 2.0.3源代码

实际上的开发需要使用到的文件只有dwr.jar一个文件。

如果你对DWR还不太熟悉,建议你一起下载dwr.war文件,通过dwr.war,你可以学习dwr的基本用法等。

将下载的dwr.jar文件拷贝到目标WEB项目中的 WEB-INF/lib 目录,安装完成。

DWR的sample
将下载的dwr.war文件拷贝到$TOMCAT_HOME/webapps目录下,启动Tomcat。
※dwr.zip的情况下,将dwr.zip重命名为dwr.war即可。

打开浏览器,访问http://localhost:8080/dwr/,显示以下页面:


DWR框架的使用



1,engine.js 以及util.js文件是DWR框架提供的 Javascript 文件,它们被包含在dwr.jar文件之中。

2,使用DWR,需要在web.xml定义DwrServlet,如下:

              <servlet>
                            <servlet-name>dwr-invoker</servlet-name>
                            <display-name>DWR Servlet</display-name>
                            <servlet-class>
                                          org.directwebremoting.servlet.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>

DWR1.x的情况下,为:
<servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>

3,要在Javascript中调用Java类的方法,需要在dwr.xml中作类似以下设置:

<dwr>
  <allow>
    <create creator="new" javascript="与Java类相对应的Javascript名">
      <param name="class" value="Java类名"/>
    </create>
  </allow>
</dwr>

一般来说,定义 [与Java类相对应的Javascript名] = [Java类名] 就OK了。

4,JSP/HTML文件中作以下定义:

<script type='text/javascript' src='dwr/engine.js'> </script>
<script type='text/javascript' src='dwr/util.js'> </script>
<script type='text/javascript' src='dwr/interface/dwr.xml定义好的Javascript名.js'> </script>
本文将使用DWR2,开发一个简单地WEB应用程序:Hello World DWR。

Hello World DWR将从HelloDwr.html 文件调用Java方法。

开发与测试环境:
IDE:Eclipse3.3
WEB服务器:Tomcat5.5
OS:WindowsXP
DWR版本:DWR 2.0.3

步骤

1,利用Eclipse创建一个新项目“HelloDWR”。


创建好的项目具有以下阶层:
HelloDWR
    \src
    \build
    \WebContent
        \ META-INF
            MANIFEST.MF
        \ WEB-INF
        \ classes
        \ lib
        web.xml

2,DWR设置


1)将下载的dwr.jar文件拷贝到HelloDWR/WebContent/WEB-INF/lib目录下。
2)打开web.xml文件,定义DWR servlet,内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.4"
    xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
    <display-name>HelloDWR</display-name>

    <servlet>
        <servlet-name>dwr-invoker</servlet-name>
        <display-name>DWR Servlet</display-name>
        <servlet-class>
            org.directwebremoting.servlet.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>
</web-app>



3,创建一个简单的Java类:


创建好的Java类HelloDwr的内容如下:
HelloDwr.java

package com.syboos.test.dwr;

public class HelloDwr {
    //无参数方法定义
    public String sayHello() {
        return "Hello DWR!";
    }
   
    //有参数方法定义
    public String sayHelloWithParam(String name) {
        return "Hello:" + name;
    }
}



4,在HelloDWR/WebContent/WEB-INF目录下创建dwr.xml文件


dwr.xml内容为:

<!DOCTYPE dwr PUBLIC
    "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN"
    "http://getahead.org/dwr/dwr20.dtd">

<dwr>
  <allow>
    <create creator="new" javascript="HelloDwr">
      <param name="class" value="com.syboos.test.dwr.HelloDwr"/>
    </create>
  </allow>
</dwr>


解说:
1),    <create creator="new" javascript="HelloDwr">
为javascript属性设置Java类的Javascript类名。一般情况,设置与Java类的名称同名。
2),     <param name="class" value="com.syboos.test.dwr.HelloDwr"/>
为value属性设置Java类的全名(包名.类名)
只作以上简单的设置,便可以从HTML文件中调用HelloDwr类的方法。



5,创建调用Java类的HTML文件。


创建好的HelloDwr.html文件内容如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-31j">
<title>Insert title here</title>

<script type='text/javascript' src='dwr/engine.js'> </script>
<script type='text/javascript' src='dwr/util.js'> </script>
<script type='text/javascript' src='dwr/interface/HelloDwr.js'> </script>

<script language="javascript">
//调用无参数Java方法
function sayHello() {
  HelloDwr.sayHello(function(data) {
    dwr.util.setValue("helloDwrReply", data);
  });
}

//调用有参数的Java方法
function sayHelloWithParam() {
  var name = dwr.util.getValue("name");    //参数
  HelloDwr.sayHelloWithParam(name, function(data) {
    dwr.util.setValue("helloDwrReply2", data);
  });
}

  </script>
</head>
<body>

<input type="button" value="HelloDwr.sayHello()" onclick="sayHello()" />
<br>Replied:
<!-- 显示HelloDwr.sayHello方法的返回值 -->
<div id="helloDwrReply">
</div>

<hr>
<input id="name" type="text">
<input type="button" value="HelloDwr.sayHelloWithParam()" onclick="sayHelloWithParam(name)" />
<br>Replied:
<!-- 显示HelloDwr.sayHelloWithParam方法的返回值 -->
<div id="helloDwrReply2">
</div>


</body>
</html>

分享到:
评论

相关推荐

    DWR的学习资料,DWR学习必备

    总的来说,这个压缩包提供了一个全面的学习DWR的资源集合,从理论知识到实践案例,覆盖了DWR的方方面面。通过深入研究这些材料,你不仅可以了解DWR的工作机制,还能学会如何在实际项目中有效地应用它,提升Web应用的...

    学习dwr的一个例子

    这个"学习dwr的一个例子"是一个实践教程,可能包含了如何设置DWR环境、创建远程Java对象、调用这些对象的方法以及处理返回的数据等步骤。 1. **DWR简介**:DWR的核心功能是通过AJAX技术实现浏览器与服务器之间的...

    dwr学习教程3

    【DWR学习教程3】是针对Direct Web Remoting (DWR)这一JavaScript和Java之间的通信框架的深入学习资料。DWR允许在Web浏览器和服务器之间进行实时、安全且高效的交互,使得前端JavaScript能够调用后端Java方法,极大...

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

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

    DWR框架配置学习教程

    ### DWR框架配置学习教程 #### 一、DWR框架简介与配置 DWR(Direct Web Remoting)是一个用于简化Ajax应用开发的框架,它可以让客户端JavaScript代码直接调用服务器端Java方法,从而大大简化了前端与后端的交互...

    DWR学习案例详解(数据库)

    在这个DWR学习案例中,你可能会看到如何设置DWR环境,创建Java和JavaScript接口,以及如何进行数据库操作的示例。案例可能包括创建用户界面元素,如表格或表单,用于显示和编辑数据;编写服务器端的Java方法,处理...

    DWR框架学习资料...

    - "DWR学习.ppt":可能深入探讨了DWR的高级特性,如批处理、安全控制和性能优化,适合对DWR有一定了解的学习者提升技能。 6. **学习DWR的好处** - **提升效率**:DWR简化了AJAX开发,减少了前端与后端之间的沟通...

    一个简单DWR学习二级菜单实例

    一个简单DWR学习二级菜单实例一个简单DWR学习二级菜单实例一个简单DWR学习二级菜单实例一个简单DWR学习二级菜单实例一个简单DWR学习二级菜单实例一个简单DWR学习二级菜单实例一个简单DWR学习二级菜单实例

    DWR2学习整理资料

    **DWR(Direct Web Remoting)**是一种WEB远程调用框架,主要目的是简化AJAX(Asynchronous JavaScript and XML)开发。通过DWR,开发者可以在客户端的JavaScript中直接调用服务器端的Java方法,并且如同本地调用...

    dwr入门 dwr学习资料

    本套DWR学习资料旨在帮助初学者快速掌握DWR的基本概念和使用技巧。通过实例和详细的说明,你可以系统地了解如何在实际项目中应用DWR。 1. **DWR的基本概念** - **反向AJAX**:DWR的核心技术之一,允许服务器主动推...

    dwr视频教程

    这个“dwr视频教程1”很可能是一系列教程中的第一部分,旨在帮助学习者理解和掌握DWR的基本概念和用法。 DWR的核心功能是提供一种安全、高效的方式,使得JavaScript可以调用服务器上的Java方法,就像是本地函数一样...

    DWR2学习整理资料工程4

    DWR2学习整理资料工程最后一部分,第一次搞这东西,传得有点久。

    DWR框架学习demo

    **DWR(Direct Web Remoting)框架学习指南** DWR,全称为Direct Web Remoting,是一种在Web应用程序中实现客户端与服务器端之间直接通信的技术。它允许JavaScript在浏览器端直接调用Java方法,实现了真正的Ajax...

    DWR 1.0 学习示例

    DWR 1.0 版本是早期的一个版本,尽管现在可能已经被更新的版本替代,但它仍为理解Web应用的异步通信提供了很好的学习基础。 在这个学习示例中,我们关注的是如何使用DWR 1.0和JDK 1.4.2来判断用户是否已经注册。JDK...

    dwr学习教程2

    【DWR学习教程2】是针对Direct Web Remoting(DWR)框架的深入学习资源,主要面向希望掌握或提升Web应用程序远程调用能力的开发者。DWR是一个开源Java库,它允许JavaScript在浏览器中直接调用服务器上的Java方法,...

    dwr学习(一):简单dwr实例

    DWR (Direct Web Remoting) 是一个开源Java库,它允许Web应用程序在客户端浏览器和服务器之间进行实时的、异步的通信,无需使用XMLHttpRequest或IFrame。在本实例中,我们将探讨DWR的基本概念、如何设置以及创建一个...

    dwr学习实例+dwr完整包(简单登陆,完整版,下载可直接跑)

    在本实例中,我们看到的是一个基于DWR的简单登录系统,它包含了一个完整的包,下载后可以直接运行,这对于初学者来说是极好的学习资源。 这个实例主要展示了以下几个知识点: 1. **DWR的基本概念**:DWR的核心是它...

    (总)DWR学习下载

    DWR(Direct Web Remoting)是一种开源的JavaScript库,它允许Web应用程序在客户端(浏览器)和服务器端之间进行实时的、双向的通信,无需使用复杂的Ajax技术或者刷新整个页面。DWR使得在Web应用中实现类似桌面应用...

    Ajax学习——DWR的参考书和实用案例学习总结

    **Ajax学习——DWR的参考书和实用案例学习总结** DWR(Direct Web Remoting)是一种优秀的开源框架,专门用于简化Web应用程序中的Ajax(Asynchronous JavaScript and XML)开发。Ajax技术允许网页在不刷新整个页面...

    DWR学习资料汇总(PDF)

    这个"**DWR学习资料汇总(PDF)**"压缩包显然是一个包含各种DWR学习资源的集合,旨在帮助开发者快速理解和掌握DWR技术。 DWR的核心功能是提供了一个安全且易于使用的接口,使得JavaScript可以直接调用服务器上的Java...

Global site tag (gtag.js) - Google Analytics