`
dyllove98
  • 浏览: 1409627 次
  • 性别: Icon_minigender_1
  • 来自: 济南
博客专栏
73a48ce3-d397-3b94-9f5d-49eb2ab017ab
Eclipse Rcp/R...
浏览量:39191
4322ac12-0ba9-3ac3-a3cf-b2f587fdfd3f
项目管理checkList...
浏览量:80270
4fb6ad91-52a6-307a-9e4f-816b4a7ce416
哲理故事与管理之道
浏览量:133394
社区版块
存档分类
最新评论

DWR原理

阅读更多
通过前面五章学习,对DWR整体有所了解,但是我仍然对核心细节不是很清楚。我最后的办法就是单步调试,调试之后将所有东西串一串,DWR的原理就清楚了,搞清楚核心生产线,其他全是辅助的,没必要再分析了。老外聪明啊,服。
   我们以DWR的第一个样例为例Dynamically Text
   1,在index.html里面我们嵌入
     <script type='text/javascript' src='../dwr/engine.js'> </script>
     <script type='text/javascript' src='../dwr/util.js'> </script>
     <script type='text/javascript' src='../dwr/interface/Demo.js'> </script>
         前面两个都是DWR系统默认需要加载的,Demo.js是Demo.java所对应的。按理论,只要在web.xml和dwr.xml配置好,那么我们就可以在客户端操作Demo.js,类似于操作服务器端的Demo.js。

     
HTML source:
<p>Name:<input type="text" id="demoName"/><input value="Send" type="button" onclick="update()"/><br/>Reply: <span id="demoReply"></span></p>Javascript source:
function update() {var name = dwr.util.getValue("demoName");Demo.sayHello(name, function(data) {dwr.util.setValue("demoReply", data);});}Java source:
package org.getahead.dwrdemo.simpletext;public class Demo {public String sayHello(String name) {return "Hello, " + name;}}dwr.xml
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE dwr PUBLIC"-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN""http://getahead.org/dwr/dwr20.dtd"><dwr><allow><create creator="new" javascript="Demo"><param name="class" value="org.getahead.dwrdemo.simpletext.Demo"/></create></allow></dwr>        

       在浏览器第一次加载本页面时,浏览器第一步发现<script type='text/javascript' src='../dwr/engine.js'> </script>,根据web.xml关于dwr的配置,系统会激发Servlet的POST方法,向客户端输出engine.js文件流,这个文件你可以在IE的缓存里面发现,当然,程序会在最后输出一刻比较客户端是否已经存在该文件,如果要输出的文件流大小和和该文件大小一致,就不输出了,同样util.js、Demo.js也是这么输出的。那么看看Demo.js文件里面的内容如下:

if (typeof this['Person'] != 'function') {
  function Person() {
    this.address = null;
    this.phoneNumber = null;
    this.name = null;
    this.id = 0;
    this.salary = 0;
  }
}

// Provide a default path to dwr.engine
if (typeof this['dwr'] == 'undefined') this.dwr = {};
if (typeof dwr['engine'] == 'undefined') dwr.engine = {};

if (typeof this['Demo'] == 'undefined') this.Demo = {};

Demo._path = '/dwr/dwr';

Demo.sayHello = function(p0, callback) {
  return dwr.engine._execute(Demo._path, 'Demo', 'sayHello', p0, callback);
};

Demo.getInclude = function(callback) {
  return dwr.engine._execute(Demo._path, 'Demo', 'getInclude', callback);
};
    这样我们就知道了,实际上Demo.java类的sayHello方法已经被解释到Demo.js中了,只不过后面的调用还不是很清楚而已。
继续!
public String sayHello(String name) {
return "Hello, " + name;
}
 翻译成
       Demo._path = '/dwr/dwr';
 Demo.sayHello = function(p0, callback) {
  return dwr.engine._execute(Demo._path, 'Demo', 'sayHello', p0, callback);
};
  在调用engine.execute()方法时,最终采用无刷新访问服务器技术。
 采用该技术的关键问题是两个参数,一个是url,往什么地方发送;一个是doc,发送什么内容
 通过跟踪engine.js我们知道
url=/dwr/dwr/call/plaincall/Demo.sayHello.dwr
发送内容如下:

callCount=1DWR原理
windowName=DWR-442B435899
c0-scriptName=Demo
c0-methodName=sayHello
c0-id=0
c0-param0=string:Joe
batchId=1
page=/dwr/simpletext/index.html
httpSessionId=
scriptSessionId=1CC3A.0A3

实际上url=/dwr/dwr/call/plaincall/Demo.sayHello.dwr,转向的是 DwrServlet,DwrServlet实际上获取了两部分信息,一部分是url,根据这个能够解析到我们的目标java类、方法,另外一部分是发送信息包,实际上这就是SayHello所需要的参数输入信息,最后,返回数据,这些数据格式通过response返回,在engine.js中对应于 return batch.reply;通过解析返回对象,采用javascirpt将数据动态刷新到页面。

    至此,dwr的核心原理,基本清晰


分享到:
评论

相关推荐

    dwr原理深入透彻讲解

    理解DWR的这些工作原理对于开发人员来说至关重要,它能帮助你更有效地利用DWR进行前后端交互,实现高效、流畅的Web应用体验。通过深入研究DWR的内部机制,你可以更好地优化代码,解决可能出现的问题,以及利用其特性...

    DWR原理及中文文档

    DWR(Direct Web Remoting)是一种Java库,用于在Web应用程序中实现JavaScript和服务器端Java对象之间的双向通信。...通过深入学习DWR的原理和实践,开发者可以构建出更具吸引力和响应性的Web应用。

    DWR基础教程 开发案例

    **DWR原理** DWR作为一个Web应用的Servlet部署,它会为每个公开的Java类动态生成包含在Web页面中的JavaScript存根函数。这些函数在后台执行XMLHttpRequest,向DWR Servlet发送请求。DWR将请求转换为对服务器端Java...

    dwr源码分析

    #### DWR原理分析 DWR的核心原理基于Ajax技术和Java反射机制。当前端发起请求时,DWR会利用Ajax异步发送请求至服务器,服务器端通过反射机制找到对应的Java方法并执行。执行完毕后,结果将以JavaScript可理解的格式...

    DWR使用总结

    **DWR原理**: 1. **前端调用**:前端JavaScript调用DWR生成的对象方法,发送POST请求到`DwrServlet`。 2. **请求处理**:`DwrServlet`捕获请求,解析请求头和内容,获取JavaScript对象名、方法名和参数。 3. **映射...

    DWR开发培训资料

    介绍DWR原理及开发培训资料,来源于生活。

    dwr笔记 dwr自学资料

    本笔记将深入探讨DWR的核心概念、工作原理以及实际应用。 一、DWR简介 DWR的主要目标是消除传统的HTTP请求-响应模式的局限性,提供一种更加高效、灵活的远程调用机制。通过DWR,开发者可以在浏览器中编写JavaScript...

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

    DWR开发培训.ppt、DWR.ppt:这些可能是DWR的培训演示文稿,包含了一系列主题的讲解,可能涵盖了DWR的工作原理、核心组件、使用示例和最佳实践。通过这些PPT,你可以系统地学习DWR,并通过实例加深理解。 DWR与界面...

    DWR3.0.jar、DWR.war和DWR2.0中文说明文档

    这份文档对于理解DWR的工作原理和使用方法至关重要,特别是对于中文用户来说。DWR2.0文档可能会涵盖以下几个方面: - **安装与配置**:介绍如何将DWR添加到现有项目中,包括引入jar文件、配置web.xml和dwr.xml文件...

    dwr demo dwr简单使用

    通过这个简单的DWR演示项目,你可以深入理解DWR的工作原理,掌握如何配置DWR、编写可被客户端调用的Java方法,以及如何在JavaScript中使用这些方法。这对于想要学习和使用DWR来构建动态Web应用的初学者来说是一个很...

    DWR的基本原理以及前后台互相调用并整合SPRING的简易DEMO

    在这个“DWR的基本原理以及前后台互相调用并整合SPRING的简易DEMO”中,我们将探讨DWR的核心概念和如何将它与Spring框架集成。首先,我们需要理解DWR的工作机制: 1. **DWR Engine**:这是DWR的核心组件,负责处理...

    dwr实例,从后台取数据显示

    1. **DWR的工作原理**:DWR通过在服务器上设置一个代理,允许JavaScript调用Java方法,就像它们是本地函数一样。它处理了跨域问题,自动序列化和反序列化数据,并且支持异步调用,减少了页面刷新的需求。 2. **DWR...

    DWR应用示例源代码,很好地说明了dwr工作原理

    在这个"DWR应用示例源代码"中,我们可以深入理解DWR的工作原理及其实际应用。 DWR的核心概念包括三个主要部分:`dwrc.js`(客户端库)、`DWR Engine`(服务器端组件)和`Servlet`(DWR引擎的入口点)。以下是对这些...

    DWR中文文档 (DWR 2.0)

    **工作原理**:通过动态生成Java类对应的JavaScript代码来实现从客户端到服务器端的远程调用。这一过程隐藏了所有与网络通信相关的复杂性,使得开发者能够专注于业务逻辑而非底层技术实现。 #### 二、DWR入门案例...

    DWR介绍

    #### 二、DWR的工作原理 DWR的核心在于其能够动态生成用于调用服务器端JavaBean方法的JavaScript库。具体来说,当DWR运行时,会根据配置生成一个JavaScript库,这个库包含了对服务器端JavaBean的封装,从而允许前端...

    Dwr例子带注释

    通过研究这个"TestDwr"项目,你可以了解到如何在实际应用中集成和使用DWR,理解DWR的工作原理,并掌握创建交互式Web应用的基本技能。这个简单的例子可以帮助你快速上手DWR,为后续深入学习和实践打下基础。

    DWR框架学习demo

    **DWR(Direct Web Remoting)框架学习指南** DWR,全称为Direct Web Remoting,是一种在Web应用程序中实现客户端与服务器端之间直接...理解DWR的工作原理以及如何配置和使用,对于开发人员来说是非常有价值的技能。

    DWR 实例 + DWR 深入 (源代码分析).doc

    DWR (Direct Web Remoting) 是一个开源框架,它允许JavaScript在浏览器端直接调用Java方法,从而实现AJAX的应用。...对于任何希望深入了解DWR工作原理的开发者来说,阅读源代码都是一个有价值的学习过程。

    dwr+oracle数据操作

    1. **DWR基本原理** DWR的核心是通过HTTP协议实现在客户端JavaScript和服务器端Java之间的通信。它提供了一种动态、安全的方式,使得JavaScript可以直接调用服务器上的Java对象和方法,而无需处理复杂的AJAX...

    DWR框架DEMO下载

    通过分析和运行这个DEMO,你可以深入理解DWR的工作原理,以及如何在实际项目中利用DWR实现高效、便捷的前后台交互。这将对提升你的Web开发技能,特别是对于需要实时更新和异步交互的应用场景,具有很大的帮助。

Global site tag (gtag.js) - Google Analytics