EasyJF 官方网站全面升级,同时EasyJF开源团队也将进行全面改组,期待您给我们提出宝贵的意见及建议!

当前位置:首页-技术前沿-ajax-DWR

  • 使用dwr制作的一个学习实例
    作者: 本站会员  来源:  发布时间:2007-10-22 15:08:00
  •  

    DWR(Direct Web Remoting)是一个WEB远程调用框架.利用这个框架可以让AJAX开发变得很简单.利用DWR可以在客户端利用JavaScript直接调用服务端的Java方法并返回值给JavaScript就好像直接本地客户端调用一样(DWR根据Java类来动态生成JavaScrip代码).

    官方网站:http://getahead.ltd.uk/dwr/
    下载地址:http://getahead.ltd.uk/dwr/download
    其他的例子:http://getahead.ltd.uk/dwr/examples
    例子下载:https://dwr.dev.java.net/files/documents/2427/44995/dwr.war

    首先一个建立一个dwl.jsp文件内容如下:

       
        
        
        
        
            
        
        
        
             function update() {
             var name = dwr.util.getValue("demoName");
             Demo.sayHello(name, function(data) {
             dwr.util.setValue("demoReply", data);
      });
    }



     
      
      
      
      
      
       


      Name:
      
      
      

      Reply: 



      


    注释:dwr/engine.js是dwr的核心引擎脚本处理客户端调用的转换,dwr/util.js包含了工具函数简化页面处理。

    建立一个JAVA类Demo.java

    package ccrs.master.util;

    public class Demo {
        public String sayHello(String name) {
            return "Hello, " + name;
        }
    }



    在WEB-INF/lib下建立一个dwr.xml的配置文件

     

        "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN"
        "http://www.getahead.ltd.uk/dwr/dwr20.dtd">


      
        
          
        
      



    然后在web.xml中加入以下代码

      DWR Servlet
      dwr-invoker
      uk.ltd.getahead.dwr.DWRServlet
      
          debug
          true
      



      dwr-invoker
      /dwr/*




    存盘即可!

    使用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.ltd.uk/dwr/hints

     

  • 评论 】 【收藏】 【 推荐给朋友 】 【字体: 】 【关闭
评论:共0条

发表评论:
评论: 
    

相关栏目

  • 如何才能得到国外最新的技术

Copyright (C) 2005 EasyJF.com 简易java框架网 渝ICP备06004507号
如有意见请与我们联系