关于dwr学习(转)

来源:互联网 发布:华为交换机给端口命名 编辑:程序博客网 时间:2024/06/10 14:24

关于dwr(正在学习,感觉写的很好,所以转载过来)

7月 10, 2008
使用DWR出现“例外被抛出且未被接住”错误的原因和解决办法
归档在: DynamicLanguage, JavaPlateform, RIA — Jet @ 8:19 上午
Tags: dwr
原文出处: http://www.javatang.com/archives/2008/07/10/1954272.html
作者: Jet Mah from Java堂
声明: 可以非商业性任意转载, 转载时请务必以超链接形式标明文章原始出处、作者信息及此声明!
DWR提供了两个js文件:engine.js和util.js,通常来说我们都是动态来引用这两个js文件,在官方的例子中也是这样做的(其中dwr是mapping时的路径):

<script type="text/javascript" src="/dwr/engine.js"></script>
<script type="text/javascript" src="/dwr/util.js"></script>
但是根据页面优化原则,我们如果将所有的js文件进行压缩整合在一起的话将会极大的减少页面加载的时间。但是当我们将上面的两个js文件下载下来然后跟其他js文件整合压缩之后,访问页面的时候会出现一个“例外被抛出且未被接住”的脚本错误。

用百度搜索了一下基本只搜到一篇名为《dwr应用时请注意(初学者)》的文章,文章中建议使用他在附件中所提供的dwr.jar包。但是作者所提供的dwr版本有些低,另外作者并没有在文章中说明造成问题的原因。

后来将异常转换为英文 Exception thrown and not caught 在google中搜索了一下,得知是因为没有在页面中动态引用engine.js,因为dwr在运行的时候需要动态控制这个文件。

但是这样的话就达不到压缩engine.js文件的目的了,我无意中在官方看到一篇专门讲解怎样缓存engine.js文件的文章,下面我就将作者建议的做法说明如下:

首先使用动态加载engine.js文件,然后将该文件下载下来。打开下载下来的engine.js文件,然后将第226到242行之间的文字剪切下来,然后将dwr.jar包中的org/directwebremoting/engine.js文件内容删除,然后粘贴到该文件中并替换dwr.jar包中原来的engine.js文件,内容大致如下:

dwr.engine._origScriptSessionId = "${scriptSessionId}";
dwr.engine._sessionCookieName = "${sessionCookieName}";
dwr.engine._allowGetForSafariButMakeForgeryEasier = "${allowGetForSafariButMakeForgeryEasier}";
dwr.engine._scriptTagProtection = "${scriptTagProtection}";
dwr.engine._defaultPath = "${defaultPath}";
dwr.engine._pollWithXhr = "${pollWithXhr}";
这样就可以将下载下来的engin.js文件同其他文件进行压缩合并了,但是在页面中还必须动态引用engine.js:

<script type="text/javascript" src="/dwr/engine.js"></script>
这样一来即压缩了engine.js文件中静态的部分,又使用了engine.js中的动态部分,并且最重要的是“例外被抛出且未被接住”异常也不会再出现了。

参考资料:
Caching engine.js

评论 (0)

7月 7, 2008
如何使用DWR2.0的注解功能
归档在: DynamicLanguage, JavaPlateform, RIA — Jet @ 8:56 上午
Tags: ajax, dwr
原文出处: http://www.javatang.com/archives/2008/07/07/5648271.html
作者: Jet Mah from Java堂
声明: 可以非商业性任意转载, 转载时请务必以超链接形式标明文章原始出处、作者信息及此声明!
DWR2.0新增加了JDK5的注解(Annotation)功能,使用注解功能之后可以从很大程度上简化了原来的dwr.xml的配置,使用起来非常的方便。

一、配置DWR使用注解功能

如果让dwr使用注解功能需要在web.xml进行如下配置:

<servlet>
        <servlet-name>dwr-invoker</servlet-name>
        <servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>
        <init-param>
            <param-name>debug</param-name>
            <param-value>true</param-value>
        </init-param>
        <!-- 将设定注解的域对象和业务实现类放在下面列表中,中间使用逗号间隔 -->
        <init-param>
            <param-name>classes</param-name>
            <param-value>
                com.javatang.domain.Book,
                com.javatang.bank.Bank,
                com.javatang.dao.BookDao
            </param-value>
        </init-param>
    </servlet>
    <servlet-mapping>
        <servlet-name>dwr-invoker</servlet-name>
        <url-pattern>/scripts/ajax/*</url-pattern>
    </servlet-mapping>
这样设置之后就可以在dwr中使用注解了,非常的方便。

二、DWR提供的注解类型
经常用到的注解主要有:@RemoteProxy、@RemoteMethod、@DataTransferObject和@RemoteProperty。

1. @RemoteProxy和@RemoteMethod
@RemoteMethod对应于原来dwr.xml文件中的create标签,用于创建DWR所提供的远程方法;而@RemoteMethod对应于create标签中的 <include method=”"/>,用来指定所要暴露的方法名称。我们举例来说明:

@RemoteProxy(name="bankFunctions")
public class  Bank {
 
    @RemoteMethod
    public void buy() {
        // ...
    }
}
从上面可以看出,@RemoteProxy表示这个类将用于远程方法,而使用@RemoteMethod指定所要暴露的方法,没有使用@RemoteMethod的方法将不会显示在客户端。
上面的注释使用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="bankFunctions">
            <include method="buy" />
        </create>
    </allow>
</dwr>
如果使用Spring中的DAO活逻辑层则需要进行如下的设置:

// BookDao
@RemoteProxy(creator = SpringCreator.class,
    creatorParams = @Param(name = "beanName", value = "bookDao"),
    name="bookFunctions")
public class  BookDao {
 
    @RemoteMethod
    public void addBook(Book book) {
        // ...
    }
}
通过指定@RemoteProxy中的creator类型为SpringCreator,然后在creatorParams指定对应的beanName名称。对应的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="spring" javascript="bookFunctions">
            <param name="beanName" value="bookDao" />
            <include method="addBook" />
        </create>
    </allow>
</dwr>
2. @DataTransferObject和@RemoteProperty
@DataTransferObject对应于原来dwr.xml文件中的convert标签,用于转换Java对象;@RemoteProperty则对应于convert标签中的 <param name=”include” value=”" />。

举例说明一下:

@DataTransferObject
public class Book {
    @RemoteProperty
    private int id;
 
    @RemoteProperty
    private String name;
 
    public Book() {
    }
 
    public int getId() {
        return id;
    }
 
    public void setId(int id) {
        this.id = id;
    }
 
    public String getName() {
        return name;
    }
 
    public void setName(String name) {
        this.name = name;
    }
}
@RemoteProperty可以放在JavaBean中的私有变量上面,也可以放在getXXX方法上面。另外如果想将JavaBean中所有的属性都暴露出来的话,不需要在任何属性上面添加@RemoteProperty注释就可以了。

上面的注释对应的dwr.xml文件如下:

<!DOCTYPE dwr PUBLIC
    "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN"
    "http://getahead.ltd.uk/dwr/dwr20.dtd">
<dwr>
    <allow>
        <convert converter="bean"
            match="com.javatang.domain.Book">
            <param name="include" value="id, name" />
        </convert>
        <!-- 或者用下面的方式也可以
        <convert converter="bean" match="com.javatang.domain.Book" />
        -->
    </allow>
</dwr>
关于具体每个注释使用的方法已经所包含的参数可以参考Java Doc。使用DWR2.0的注解极大的简化了原来dwr.xml的配置,非常的方便。

参考资料:
DWR Annotations
[原创]DWR Annotations and Spring
DWR Annotations 使用 SpringCreator

评论 (0)

5月 9, 2007
DWR 2.0正式版发布
归档在: JavaPlateform, RIA — Jet @ 10:19 下午
Tags: dwr
原文出处: http://www.javatang.com/archives/2007/05/09/1931162.html
作者: Jet Mah from Java堂
声明: 可以非商业性任意转载, 转载时请务必以超链接形式标明文章原始出处、作者信息及此声明!
2007年4月26日, Joe Walker 在博客上写道:“在等待了许久之后,我们现在终于可以说,DWR 2.0正式版发布了!”

相对于1.x版本而言,2.0版本做了很多的更新。根据官方发布的changelog来看,主要增加或增强了三个大的方面:JavaScript Proxy API、Reverse Ajax和Security。

现在还没具体研究,等用过之后再跟大家讨论下

评论 (1)

3月 11, 2007
DWR文档之dwr.xml
归档在: JavaPlateform, RIA — Jet @ 9:30 上午
Tags: ajax, dwr
原文出处: http://www.javatang.com/archives/2007/03/11/3030123.html
作者: Jet Mah from Java堂
声明: 可以非商业性任意转载, 转载时请务必以超链接形式标明文章原始出处、作者信息及此声明!
原文出处: http://www.javatang.com/archives/2007/03/11/3030123.html
翻译: Jet Mah
声明: 请维持文章的完整性任意转载

dwr.xml 是用来配置DWR的文件。默认情况下需要将其同web.xml一起放在WEB-INF文件夹中。

DTD
这里有一个用于 dwr.xml的 DTD文档,另外还有一个用DTDDoc创建的参考文档。

创建 dwr.xml 文件
dwr.xml 文件结构如下:

<!DOCTYPE dwr PUBLIC 
    "-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN" 
    "http://www.getahead.ltd.uk/dwr/dwr10.dtd"> 
 
<dwr> 
 
  <!-- init is only needed if you are extending DWR --> 
  <init> 
    <creator id="..." class="..."/> 
    <converter id="..." class="..."/> 
  </init> 
 
  <!-- without allow, DWR isn't allowed to do anything --> 
  <allow> 
    <create creator="..." javascript="..."/> 
    <convert converter="..." match="..."/> 
  </allow> 
 
  <!-- you may need to tell DWR about method signatures --> 
  <signatures> 
    ...
  </signatures> 
 
</dwr>
术语
一些术语是值得去理解的 - 参数会被 转换(converted),但是远程的beans会被创建(created)。因此如果bean A有一个方法 A.blah(B),那么需要一个A的创建器(creator) 和 B 的转换器(converter)。

(1) <allow>
allow部分定义的是DWR可以创建和转换的类。

(2) Creators
每个被调用的类都需要一个 <create …> 来定义。有几种类型的creator,最常用的是“new”关键字和Spring框架。更多的信息请参考 Creator 文档。

(3) Converters
所有的参考都需要被转换。你有权限转换JDK所提供的多数类型,但是需要给DWR权限来转换你自己的代码。也就是说JavaBean参数需要一个 <convert …> 来定义。

默认情况下下述类型可以直接被转换:

所有的基本类型,比如boolean、int、double等等
基本类型的对象类如Boolean、Integer等
java.lang.String
java.util.Date 和 SQL 表达式
上述类型的数组
上述类型的集合类 (Lists、Sets、Maps、Iterators等)
从DOM、XOM、JDOM和DOM4J创建的DOM对象(像Element和Document)
具体怎样转换你自己的JavaBeans和其他参数请参考Converter 文档。

(4) <init>
init部分是可选的,用来声明用来创建和转换beans的类。大多数情况下你用不到它。如果你想定义一个新的Creator [JavaDoc] 和 Converter [JavaDoc] 的话,需要在此声明。不过务必检查你所使用的DWR是否以及支持上述功能了。

init部分只是告诉DWR存在这个类,并且给出了这个类的一些基本的运行信息。但这些类并没有开始使用,这点有点类似Java中的import语句。大多数类在使用前必须被导入,但是声明导入并不意味着类开始被使用。每个 creator 和 converter 都有一个id属性,这样方便后面调用。

(5) <signatures>
DWR 使用映射来确定哪些类型需要被转换。有的时候这些类型信息不明确,这时你可以在此写下方法的签名来指明其类型。更多细节请参考signatures 部分。

多个 dwr.xml 文件

可以有一个以上的 dwr.xml 文件 (更多细节可参考 web.xml 文档 )。每个文件中的节点会被整合在一起。这个功能可以使DWR来加载基础配置文件来运行每个文件。

我们可以通过查看标准的配置文件对 dwr.xml 进行一个良好的认识。

Converters
Creators
Signatures
英文出处:
http://getahead.org/dwr/server/dwrxml
DWR文档翻译文档列表:
http://www.javatang.com/dwr-chinese-documents/

评论 (0)

3月 10, 2007
DWR文档之常见问题及解答
归档在: JavaPlateform, RIA — Jet @ 10:13 上午
Tags: dwr
原文出处: http://www.javatang.com/archives/2007/03/10/1321121.html
作者: Jet Mah from Java堂
声明: 可以非商业性任意转载, 转载时请务必以超链接形式标明文章原始出处、作者信息及此声明!
原文出处: http://www.javatang.com/archives/2007/03/10/1321121.html
翻译: Jet Mah
声明: 请维持文章的完整性任意转载

TransformerFactoryConfigurationError

该错误的堆栈输出(stack trace)如下:

root cause
javax.xml.transform.TransformerFactoryConfigurationError:
Provider org.apache.xalan.processor.TransformerFactoryImpl not found
javax.xml.transform.TransformerFactory.newInstance(Unknown Source)

这主要是因为Tomcat没有正确安装而造成的,而与DWR本身没有太大的关系。最快的解决办法是下载Xalan包并将其放在 $TOMCAT-HOME/common/lib 目录下面。DWR 2.0 在应付此问题上比 DWR 1.x 提升了很多,但此问题最根本的原因在于DWR的XML分析依赖于XSLT分析器。

如果在JDK 5 下出现此问题,可以通过设置如下的VM参数让Tomcat正常运行。

-Djavax.xml.transform.TransformerFactory=
com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl

XML 解析错误
开始启动DWR是出现的大多数错误都是 XML 解析错误。这取决于你的Tomcat是否安装 Xerces 包,而与DWR本身无关。

JDK 1.3 本身不提供XML解析器,所以你必须需要 xercesImpl.jar 和 xml-apis.jar 包来进行XML解析。
JDK 1.4.0 和 JDK 1.4.1 虽然提供了一个XML解析器,但是问题很多。所以你依然需要将xercesImpl.jar 放在 tomcat/common/endorsed 目录下来覆盖默认的XML解析器。
JDK 1.4.2 和 JDK 5 非常全面地提供了XML解析,所以不需要额外的jar包。
最后需要说明的是,各个版本的Tomcat要么本身提供XML解析器要么提供相应的jar包。最重要的是要看你所使用的那个版本的JDK是否提供正确的jar包。

BEA Weblogic下的ClassPath问题
在 Weblogic 8.1 (或许也有其他版本)下面有时会出现DWR找不到用户自己创建的类。

如果dwr.jar放在了一个 APP-INF 目录(比如:APP_INF/lib)下面的话就会产生这种问题。在这种情况下,DWR依然会起作用,调试页面也会出现在示例中,但是查找你创建的类的时候会出现问题。

解决的办法是将dwr.jar 放在你自己的 WEB-INF/lib 目录下面。

cookies被禁用的情况下使用 DWR
Servlet 规范支持当 cookies 被禁用的时候使用 URL re-writing 来实现 HttpSessions。DWR 2.x 支持这个功能,但是 DWR 1.x 不支持。你可以通过以下步骤使 DWR 1.x 实现上述功能:

从 dar.jar 中提取出 engine.js 文件,然后像 jsp 文件那样保存到你的文件系统中。
在 “DWREngine._sendData = function(batch)” 函数中增加一行:
statsInfo += ";jsessionid=" + <%="'"+session.getId()+"'"%>
通过上述修改之后 DWR 1.x 也可以支持 url-rewriting 了,而 DWR 2+ 本身就支持这个功能。

Annotations 和 Websphere
Websphere 对 Java5 支持比较晚,所以有一些版本的 Websphere 与 Java5 代码不兼容。DWR 1.x 中不包含 Java5 特有的代码,所以不会出现问题。DWR 2.x 包含了 Java5 支持的内容。在使用Websphere / DWR 2.x 的时候可能会出现下面的控制台信息:

TRAS0014I: The following exception was logged
java.lang.LinkageError: LinkageError while defining class:
org.directwebremoting.annotations.AnnotationsConfigurator

Could not be defined due to:
org/directwebremoting/annotations/AnnotationsConfigurator
(Unsupported major.minor version 49.0)

This is often caused by having a class defined at multiple
locations within the classloader hierarchy. Other potential
causes include compiling against an older or newer version of
the class that has an incompatible method signature.

上面的错误信息说明 Websphere 不能正常运行。

依然有问题?
如果在此没有发现你要的答案,请加入新闻组 到那里去问问。

英文出处:
http://getahead.org/dwr/fixes
DWR文档翻译文档列表:
http://www.javatang.com/dwr-chinese-documents/

评论 (3)

3月 8, 2007
Netbeans上的DWR插件
归档在: JavaPlateform, RIA — Jet @ 9:38 下午
Tags: ajax, dwr, netbeans
原文出处: http://www.javatang.com/archives/2007/03/08/3846115.html
作者: Jet Mah from Java堂
声明: 可以非商业性任意转载, 转载时请务必以超链接形式标明文章原始出处、作者信息及此声明!
一个名为Chuck的人发布了Netbeans上的DWR插件,主要有以下功能:

1. 将一个JavaEE项目添加为支持DWR;
2. 多视图下编辑dwr.xml文件,目前提供了三种视图:创建、转换和XML文本;
3. 从NetBeans的Palette面板上直接拖拽DWR对象到JSP页面中。



具体可点击这里

如果有一个这样的Eclipse的插件就太好了,抽时间做一个出来,呵呵…

评论 (0)

3月 6, 2007
DWR官方更换新域名
归档在: JavaPlateform, RIA — Jet @ 10:00 下午
Tags: ajax, dwr
原文出处: http://www.javatang.com/archives/2007/03/06/0048111.html
作者: Jet Mah from Java堂
声明: 可以非商业性任意转载, 转载时请务必以超链接形式标明文章原始出处、作者信息及此声明!

今天在Joe Walker的博客看到DWR的官方网站的域名已经由原来的getahead.ltd.uk更改为现在的getahead.org了,所以DWR的地址更新为 http://getahead.org/dwr。

Joe在他的博客中写道更换的原因是因为Yahoo一直认为.ltd.uk不够正式,至少不如.co.uk正式,想不到英国的二级域名更多,比cn的还黑啊,呵呵。

这样以来本站中的DWR文档中指向原文档的链接也需要更新,尽管现在老的域名也可以访问。

评论 (0)

11月 21, 2006
DWR文档之 技巧和要点
归档在: JavaPlateform, RIA — Jet @ 9:05 上午
Tags: ajax, dwr
原文出处: http://www.javatang.com/archives/2006/11/21/055584.html
作者: Jet Mah from Java堂
声明: 可以非商业性任意转载, 转载时请务必以超链接形式标明文章原始出处、作者信息及此声明!
原文出处: http://www.javatang.com/archives/2006/11/21/055584.html
翻译: Jet Mah
声明: 请维持文章的完整性任意转载

使用DWR的技巧和要点

这里列出了在使用DWR时候的一些技巧和要点,希望对你有所帮助。请对你有过帮助的地方添加评论…

创建一个 “Google Suggest” 组件
我一直不主张自己写 suggest 组件。虽然实现一下基本的功能比较简单,但是完全实现快捷键(keyboard navigation)功能就非常困难了。下面是一些包含 suggest 组件的库:

Script.aculo.us 包含了一个 Autocompleter.Local 函数,该函数可以与DWR融为一体。使用’Local’版本并远程协同DWR工作比使用’Remote’ 版本容易的多,因为后者还需要知道服务端怎样工作。更多有所帮助的信息请参考这封在 dwr-users 邮件列表的信 ,或者Rubens的这篇博文。

来自 Rimu Hosting 的 Alternatively Peter 实现了一个独立的并且dwr兼容的版本,这里是他发表的文章。

增强的文件上传
Pierre Losson 书写了一种将 DWR 和 Commons-FileUpload 结合在一起的方法,很值得一读。完整的源代码和 war 演示程序都可以下载。

改进 loading message
存在于 DWR 1.0 的 useLoadingMessage() 函数有一些缺陷(比如你不能自定义显示的文字信息,还有在调用它的时候必须非常小心)。你可以使用剪切和粘贴一个该函数的新版本来修复这些缺陷(译注:这里作者的意思是你可以在DWR所提供的 useLoadingMessage() 函数的基础上进行修改)。 useLoadingMessage() 文档 提供了更详细的资料。

使用调试/测试页面
当程序出现问题的时候,另外一个非常有用的助手就是调试/测试页面(地址是 http://localhost:8080/[YOUR-WEBAPP]/dwr )。这个页面的一些基本用法已经包含在了 开始使用 DWR 这篇文章之中,但是记住程序何时中断的显得更有意义,这是因为通常这些页面提供了将要出现错误的信息。

访问 HttpServletRequest
你可以 访问 HttpServletRequest 并映射对象。

向回调函数传递参数
通常我们需要把额外的信息传递给回调函数,但是所有的回调函数只有一个参数(远程方法中的返回值),它应该更灵活。 这里专门有一整页专注于这个问题,可以帮助你解决这个问题。

调整服务器性能
CPU 瓶颈:一些 公正认真的性能大师们 认为 DWR 基本没有什么性能方面的问题。DWR所使用的时间跟服务器和网络比起来微不足道。如果你真的想提升性能的话,可以讲日志的级别设置位ERROR或FATAL,当然最主要的还要取决于你的代码。

网络瓶颈: DWR不能管理浏览器的缓存,所以浏览器会不断地重复读取 DWR javascript 脚本。有一个比较简单的解决方法,将这些 javascript 文件复制到 web-app 目录,这样服务器可以更好的来处理它们。你还可以将所有的 javascript 文件合并到一个文件中,然后使用 DOJO compressor 压缩来减小文件的体积。

我们将发布一个补丁使得 DWR 在 web 程序启动的时候可以使用时间来标记 Javascript 文件,但是这些并不是最好的解决方法,因为上面所说的方法非常简单并且可以很大程度上压缩合并 Javascript 文件。

英文出处:
http://getahead.org/dwr/hints
DWR文档翻译文档列表:
http://www.javatang.com/dwr-chinese-documents/

评论 (0)

10月 24, 2006
DWR文档之 网络上的资料
归档在: JavaPlateform, RIA — Jet @ 11:42 上午
Tags: ajax, dwr
原文出处: http://www.javatang.com/archives/2006/10/24/424782.html
作者: Jet Mah from Java堂
声明: 可以非商业性任意转载, 转载时请务必以超链接形式标明文章原始出处、作者信息及此声明!
原文出处: http://www.javatang.com/archives/2006/10/24/424782.html
翻译: Jet Mah
声明: 请维持文章的完整性任意转载

网络上关于 DWR 的教程和文章

DWR 的各种教程开始出现在网络上。欢迎你对除此之外的其他教程或者任何包含下面文章的书刊进行评论。

连接 DWR 和其他技术
有很多是关于将 DWR 应用到其他技术的文章:

Mats Henricson 写的文章是关于 将DWR 应用到 Appfuse
Jorge Martín Cuervo 记录了他使用 DWR 的亲身经历 ,还有 JMeter.
Helge Tesgaard 基于 DWR 使用 Commons FileUpload 和 Acegi 创建了一个 Ajax 上传进度条.
Sujit Pal 写的使用 DWR 和 Velocity。
Pinaki Poddar 为 BEA dev2dev 写了两篇关于 DWR 和 EJB3 的文章:第一部分 和 第二部分。
DWR 和 Confluence ,作者:Dan Hardiker.DWR 教程
这一部分是一组介绍 DWR 的文章,大部分都是从 1.x 版本开始的。

Sun: Hands-On DWR Labs

来自于 Sun 的 Sang Shin from Sun 创建了一组 Hands on Labs 用来讨论各种 Ajax 技术。这里是 DWR 部分。

摘录:此文档从头教给你怎样快速使用 DWR 开发基于 Ajax 的 Web 程序。

Java.net: DWR 聊天室演示程序

由 DWR 的开发者 - Joe Walker 所创建。

摘录: 文章演示了使用 DWR 创建一个多用户的网络聊天室。它说明将客户端浏览器中的 JavaScript 和服务端的 Java 连在一起是如果的容易。它的目标是在客户端和服务端都使用大概 100 行代码来创建这个完整的系统……

IBM DeveloperWorks: 结合 Direct Web Remoting 使用 Ajax

再也没有比这个更简单的连载文章了,作者是 Phil McCarthy
(译注:中文版本的地址为:http://www-128.ibm.com/developerworks/cn/java/j-ajax3/)

摘录: Philip McCarthy 介绍了如何使用Direct Web Remoting(DWR)直接把 JavaBean 的方法公开给 JavaScript 代码并自动进行 Ajax 的繁重工作。… 虽然 DWR 不是 Java 平台中唯一的 Ajax-RPC 工具,但是它是其中一个特别成熟的工具,并且提供了一大堆有用的函数。

BEA dev2dev: Ajax简介


关于 Ajax 和 DWR 的简介,作者 David Teare
(译注:中文版本的地址为:http://dev2dev.bea.com.cn/techdoc/2005110103.html)

摘录:DWR 真正的简洁在于,一旦你设置了公开于客户端的服务端代码,它将映射到被网页调用的 JavaScript 对象,这些对象也可以直接访问服务端。网页可以直接使用被映射的 JavaScript 对象,就好像直接使用服务端的代码一样;DWR 无缝地解决了实现这些功能的细节……

JavaWorld: DWR 使开发 Ajax 如此简单
一篇介绍 DWR 的文章,作者是 Cloves Carneiro Jr.

摘录:文章介绍了使用开源项目 DWR(Direct Web Romoting)实现 AJAX(Asynchronous JavaScript and XML)来改善 Web 应用程序的优势。作者逐步操作来演示了 DWR 怎样简单而快速的实现 AJAX。(1,600 字;2005年6月20日)

英文出处:
http://getahead.org/dwr/elsewhere
DWR文档翻译文档列表:
http://www.javatang.com/dwr-chinese-documents/

评论 (0)

10月 23, 2006
DWR文档之范例
归档在: JavaPlateform, RIA — Jet @ 10:15 下午
Tags: ajax, dwr
原文出处: http://www.javatang.com/archives/2006/10/23/153481.html
作者: Jet Mah from Java堂
声明: 可以非商业性任意转载, 转载时请务必以超链接形式标明文章原始出处、作者信息及此声明!
原文出处: http://www.javatang.com/archives/2006/10/23/153481.html
翻译: Jet Mah
声明: 请维持文章的完整性任意转载

范例

官方站点上有 7 个指南或范例,他们主要用来理解 DWR 怎样工作而不是延伸 Ajax。

在尝试自己创建这些例子之前,最好先理解 开始使用 DWR 部分。

站点实例
动态更新文本
动态表单编辑
表格编辑
动态地址簿
动态下拉列表
动态验证
简易聊天室
操作 XML
例子源代码英文出处:
http://getahead.org/dwr/examples
DWR文档翻译文档列表:
http://www.javatang.com/dwr-chinese-documents/