dwr 簡單實例

實驗時發現需要導入的包有兩個:

1、dwr.jar (本人用的是dwr2.0.5.jar)

2、commons-logging.jar

 

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

首先一个建立一个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">
    <script language="javascript">
         function update() {
         var name = dwr.util.getValue("demoName");
         Demo.sayHello(name, function(data) {
         dwr.util.setValue("demoReply", data);
  });
}

</script>

<script type='text/javascript' src='/dwr/dwr/interface/Demo.js'></script>
  <script type='text/javascript' src='/dwr/dwr/engine.js'></script>
  <script type='text/javascript' src='/dwr/dwr/util.js'></script>
  </head>
 
  <body>
   <p>
  Name:
  <input type="text" id="demoName"/>
  <input value="Send" type="button" οnclick="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/下建立一个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

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!
提供的源码资源涵盖了小程序应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值