文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>DWR简单实例

DWR简单实例

时间:2008-05-28  来源:qbq

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文件
内容如下:
<head>
  
    <title>dwr.jsp</title>
    
    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">    
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="This is my page">
    

  
  
  </head>
  
  <body>
   <p>
  Name:
  <input type="text" id="demoName"/>
  <input value="Send" type="button" onclick="update()"/>
  <br/>
  Reply: <span id="demoReply"></span>
</p>

  </body>

注释: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的配置文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dwr PUBLIC
    "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN"
    "http://www.getahead.ltd.uk/dwr/dwr20.dtd">

<dwr>
  <allow>
    <create creator="new" javascript="Demo">
      <param name="class" value="ccrs.master.util.Demo"/>
    </create>
  </allow>
</dwr>

然后在web.xml中加入以下代码
<servlet>
  <display-name>DWR Servlet</display-name>
  <servlet-name>dwr-invoker</servlet-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>

存盘即可!

使用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
相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载