`
heimuad
  • 浏览: 296758 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

dwr学习

    博客分类:
  • ajax
阅读更多
  1. 现把我学习DWR的一些心得写出来,供大家参考,由于是个人心得,所以难免在措辞方面,概念方面把握不准确的地方,还请大家见谅,发现有什么问题,或者你有什么好的观点,意见都可以留下来。    
  2. 1.配置说明:    
  3. 1).首先在web.xml中添加如下语句。    
  4. <servlet>    
  5. <servlet-name>dwr-invokerservlet-name>    
  6. <servlet-class>uk.ltd.getahead.dwr.DWRServletservlet-class>    
  7. <init-param>    
  8. <param-name>debugparam-name>    
  9. <param-value>trueparam-value>    
  10. init-param>    
  11. servlet>  
  12.   
  13. <servlet-mapping>    
  14. <servlet-name>dwr-invokerservlet-name>    
  15. <!--用于拦截 http://localhost:8080/dwr-->    
  16. <url-pattern>/dwr/*url-pattern>    
  17. servlet-mapping>  
  18.   
  19. 2).新建一个dwr.xml文件,和web.xml同目录。   
  20.   
  21. <!--sp-->xml version="1.0" encoding="UTF-8"?>    
  22. <!--CTYPE dwr PUBLIC    </sp-->
  23. "-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN"    
  24. "http://www.getahead.ltd.uk/dwr/dwr10.dtd">  
  25.   
  26. <dwr>    
  27. <allow>    
  28. <create creator="new" javascript="JDate"> //对应JavaScript文件名,即:JDate.js在这个文件中有一个名为JDate的JavaScript对象    
  29. <param name="class" value="java.util.Date"/> //对应Java类。    
  30. create>    
  31. <create creator="new" javascript="Student">    
  32. <param name="class" value="com.dwr.test.Student"/>    
  33. create>    
  34. <convert converter="bean" match="com.dwr.test.*" >convert>    
  35. allow>    
  36. dwr>  
  37.   
  38. 然后启动服务访问:http://localhost:8080/应用名/dwr (如果是ROOT方式部署的,可以省去应用名)    
  39.   
  40. 2.被映射的JavaBean对象中方法的修饰符只有为Public才可以被暴露出来,private ,protected,package都不会暴露,支持继承体系,如果当前被映射的Bean有父类中提供了某Public方法,该方法也会暴露出来。Bean中的属性是不会暴露出来的。    
  41. <create creator="new" javascript="Student">    
  42. <param name="class" value="com.dwr.test.Student"/>    
  43. <include method="getUserName"/>    
  44. create>    
  45. 另外还可以在dwr.xml <create><create>中明确描述那些公共的方法可以暴露给外界。如: <include method="getUserName"/> 表示把com.dwr.test.Student中的getUserName()方法暴露出来。如果不写<include>配置,表示把所以的Public方法都暴露,如果写了<include>则只暴露明确指定的方法。   
  46.   
  47. 3.Avoid reserved JavaScript words; Methods named after reserved words are automatically excluded. Most JavaScript reserved 
  48. words are also Java reserved words, so you won't be having a method called "try()" anyway. However the most common gotcha is "delete()", which has special meaning from JavaScript but not Java.    
  49. Overloaded methods can be involved in a bit of a lottery as to which gets called, so avoid overloaded methods. 
  50.   
  51. 4.    
  52. <script type='text/javascript' src='/dwr/interface/Student.js'>script>    
  53. <script type='text/javascript' src='/dwr/engine.js'>script>    
  54. <script type='text/javascript' src='/dwr/util.js'>script>    
  55. 在需要使用Dwr框架直接范文JavaBean的Jsp页面中添加如上三条语句。 /dwr/engine.js,/dwr/util.js是固定的,是Dwr的脚本驱动Js和常用   
  56.   
  57. 的工具类用来对返回的信息加工处理的。/dwr/interface/Student.js是用户需要直接访问的JavaBean对应的JavaScript映射。注意路径的书写,以及相对位置,这几个文件的层次结构是固定的。并且应用在部署的时候要选择Root方式,否则找不到路径。   
  58.   
  59. 5.    
  60. <input type='button' onclick='javascript:Student.getUserName(reply);' value='Execute' >    
  61. <script type='text/javascript'>    
  62. var reply = function(data)    
  63. {    
  64. alert(data);    
  65. }    
  66. script>  
  67.   
  68. 前面说过:/dwr/interface/Student.js中有一个和Student同名的对象。即:Student。所以在调用这个Js中方法时需要加上这个对象名,    
  69. Student.getUserName(reply),这样处理是为了避免在引入两个Bean,他们对应的JavaScript映射文件中出现相同的函数名情况下的调用混乱。   
  70.   
  71. Student.getUserName(reply)    
  72. 在Student.js文件中对应着:    
  73. Student.getUserName = function(callback) {    
  74. dwr.engine._execute(Student._path, 'Student', 'getUserName', callback);    
  75. }    
  76. 可见reply参数是必须的,而且这个参数是一个function类型。用来接受从后台返回来的值。 返回的值就存放在变量data中,我们自己的Javascript的最后需要的处理的值就是data.   
  77.   
  78. 函数reply的作用就是被回调并带回用户所需的值。可以把这个方法设置为通用方法。统一取得值,放到全局变量中。如本例中accessRemoteData.js文件中的getRemoteData方法。   
  79.   
  80. 6.    
  81. AJAX是异步实现的,并且AJAX确实是为了异步的实现才引入近来的。但是,AJAX仍然也支持同步的调用。在纯粹的XMLHttpRequest中可以设置调用是否是异步的。XMLHttpRequest的open函数是有一个是否同步参数,如下:    
  82. XMLHttpRequest.open(String method, String URL, boolean asynchronous)    
  83. 其中的asynchronous就是是否同步的参数了。    
  84. 在DWR的engine.js文件,有setAsync方法,就是设置调用是否是同步的,还是异步的。   
  85.   
  86. dwr.engine.setAsync(false); 设置为同步运行.    
  87. dwr.engine.setAsync(true); 设置为异步运行.   
  88.   
  89. 同步模式:    
  90. <input type='button' onclick='javascript:dwr.engine.setAsync(false); Student.getUserName(getRemoteData);alert(message)'/>    
  91.   
  92. 异步模式:    
  93. <input type='button' onclick='javascript:dwr.engine.setAsync(true); Student.getUserName(getRemoteData); alert(message)'/>    
  94.   
  95.   
  96. A;—>异步线程    
  97. |    
  98. B;    
  99. 具体表现为:在A语句体中启动了一个异步线程,到后台获取信息。如果为异常模式,在启动A异步线程之后,B继续执行。    
  100. 如果为同步模式:在启动A异步线程之后,B并不执行,直到后台获取信息的动作结束,并返回后才执行。   
  101.   
  102. 7.    
  103. <convert converter="bean" match="com.dwr.test.*" >convert>    
  104. 把JOPO对象反转成JavaScript的对象。match表示对这个包下面所有的JOPO都可以转换。之前说了:进行远程方法调用时,需要传递一个回调函   
  105.   
  106. 数,用来取回自己所需要的值,最后这个值付给了回调函数的形参变量data    
  107. 如果调用的方法是 Student.getUser(callback).那么返回的data是“Object”类型。如果User对象有userName,password属性,那么就可以直   
  108.   
  109. 接的data.userName ,data.password来取得对象(JavaScript对象)中的值。而这个JavaScrip对象,User就是Conver过来的。   
  110.   
  111. 如果返回的是一个普通POJO,此时data就代表Conver过来的POJO对象,那么可以直接由data.属性名来得到对应POJO中的值。    
  112. 如果返回的是一个List, 此时data就代表Conver过来的List对象,用data[i]来取得List中下标为i的对象。如果取到的对象还是一个POjO,那么继续按照前一种方法处理。    
  113. 如果返回的是一个Map, 此时data就代表Conver过来的Map对象,用data.key1来取得"Key1"对应的对象,data.key1.userName;   
分享到:
评论
1 楼 bo_hai 2011-08-10  
哎,不是原创呀!

相关推荐

    DWR学习资料

    DWR学习资料 :DWR 3.0 上传文件.txt DWR3.0反向Ajax示例.txt DWR3.0学习笔记.txt DWR3.0学习网址.txt dwr分页.doc DWR分页代码.doc DWR中文文档.doc DWR中文文档.pdf dwr做comet的完整实现.doc Spring整合DWR comet ...

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

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

    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学习教程2

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

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

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

    dwr入门 dwr学习资料

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

    DWR学习资料汇总(PDF)

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

    DWR学习的各类文件

    在"DWR学习的各类文件"中,我们可能涵盖以下核心知识点: 1. **DWR的基本概念**:DWR的核心是它的反向Ajax机制,它允许JavaScript调用服务器端的Java方法,并将结果返回到客户端。这打破了传统的Web应用程序模型,...

    dwr学习实例 初学者的宝

    这个“dwr学习实例 初学者的宝”压缩包文件显然是为那些想要深入理解并实践DWR技术的新手准备的。DWR的主要目标是简化前端与后端的交互,使得动态更新网页变得更加便捷,无需刷新整个页面。 在DWR中,你可以创建一...

    DWR学习笔记及经验总结

    在“DWR学习笔记及经验总结”中,我们可以期待找到以下关键知识点: 1. **DWR的基本概念**:了解DWR的核心理念,包括远程方法调用(Remote Method Invocation)、反向Ajax以及它如何通过JSON或XML格式传递数据。 2...

    DWR学习笔记和与spring整合练习

    **DWR(Direct Web Remoting)**是一种JavaScript库,它允许Web...通过深入学习和实践"DWR学习笔记和与spring整合练习",开发者可以掌握DWR的精髓,熟练运用其与Spring的整合,打造出高效、安全、易维护的Web应用程序。

    基于JavaScript和Java的DWR学习示例设计源码

    该项目是基于JavaScript和Java的DWR学习示例设计源码,共包含33个文件,其中包括18个XML配置文件、3个JavaScript源文件、2个Java源文件、2个JSP页面文件、2个class字节码文件、2个lst列表文件、1个Markdown文档、1个...

    dwr学习笔记pdf文件

    ### dwr学习笔记pdf文件知识点概述 #### 一、DWR框架简介 - **DWR**(Direct Web Remoting)是由GetAhead公司开发的一款用于实现Ajax应用的框架。该框架的核心价值在于允许客户端JavaScript直接调用服务器端Java类...

    dwr学习笔记和总结

    ### dwr学习笔记和总结 #### 一、DWR简介 DWR (Direct Web Remoting) 是一个简化Ajax开发的框架,它使得JavaScript能够直接调用服务器端的Java方法成为可能,无需编写复杂的Ajax代码。这极大地提高了开发效率,并...

    dwr学习之基础篇

    《DWR学习之基础篇——深入理解Direct Web Remoting》 Direct Web Remoting(DWR)是一种开源JavaScript库,它允许在Web浏览器和Java服务器之间进行实时、双向通信,极大地简化了AJAX(Asynchronous JavaScript and...

    DWR学习笔记-HelloWorld篇

    【标题】:“DWR学习笔记-HelloWorld篇” 在IT领域,DWR(Direct Web Remoting)是一个开源的Java框架,它允许JavaScript在浏览器端直接调用服务器端的Java方法,实现了网页与服务器的实时交互,类似于Ajax技术,但...

    Dwr 学习研究应用--Spring和DWR的整合

    《Dwr 学习研究应用--Spring和DWR的整合》 DWR(Direct Web Remoting)是一个开源的Java库,允许JavaScript在浏览器端与服务器端的Java对象进行交互,从而实现动态Web应用程序。它打破了传统的AJAX模式,提供了一种...

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

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

Global site tag (gtag.js) - Google Analytics