`
maiguang
  • 浏览: 262463 次
  • 性别: Icon_minigender_1
  • 来自: 焦作
社区版块
存档分类
最新评论

dwr的creator and convert

    博客分类:
  • dwr
阅读更多

ajax是Asynchronous JavaScript and XML的简称,是一种由javascript通过XmlHttpRequest与服务器交互更新数据的一种异步请求的技术,因为通过ajax你只需传递需 要更新的数据,而不是整个页面,能有效的减少页面和服务器端的数据传输,通过javascript更新页面时可以做到页面不刷新,所以ajax很适合用于 局部频繁更新的页面。

我一直都对ajax提不起兴趣,理由很简单,也很偏激:我是一个java狂热者,并固执的认为java最好的用途就是在中间件上,还有java代码能带给 系统很好的重用性和可维护性。而ajax处理的方面却是在最不被我看上的表示层上,而表示层一般都不被我系统的考虑范围之内,觉得这是系统的外衣,是有可 能要经常变换的。所以纵是很早之前就已经知道有ajax,但一直没有更深的去了解它。

事实上在ajax 这个概念提出来之前,我们已经在项目中采用了相同的技术,我们大多的做法是通过增加一个隐含的iFrame,通过iFrame向服务器提交请求获取数据和 页面进行交互,这完全的实现了ajax的功能,但这种做法很繁琐,实现起来工作量也很大,而且在代码上也会相当的冗余,不怎么优美。而ajax的java 框架dwr使这一过程变得简单,在此特别感谢Getahead IT咨询公司的Joe Walker和他的团队开发出DWR这样神奇的工具并与大家分享它!

现在我们来看看dwr是怎么处理相应的关系的

ajax是通过javascript向服务器发出请求来获取相应的数据的,所以首先,dwr需要你在web部署了一个servlet--DWRServlet,DWRServlet在初始化的时候会去读dwr的发布文件/WEB-INF/dwr.xml

在解释dwr.xml文件之前我们先来看看两个重要的概念,creator和converter这两个从它们的字面意义就很容易看出它们的作用
creator在dwr中主要的职责就是把用户发布在dwr.xml中的class进行实例化,
converter的职责是在接受请求时把客户端的javascript对象转换成服务器端的java对象,通过调用发布的java bean后,在把返回的java的对象转化成javascript的对象给客户端调用

dwr.xml有两个主要的元素:init,arrow
init是用来定义你可以使用的converter和creator它们都有一个id和class的属性:id是一个标志可以在arrow元素中被引用于配置create和convert的,class是具体的类,的其定义样式如下:
 

    <creator id="new" class="uk.ltd.getahead.dwr.create.NewCreator"/>
 
    <converter id="bean" class="uk.ltd.getahead.dwr.convert.BeanConverter"/>
arrow是用于定义你允许dwr创建和转换的java bean,包含两种类型:create和convert。其标签样式如下:
 
    <create creator="new" javascript="planApp">
 
        <param name="class" value="com.ionglobal.erp.app.PlanApp" />
 
    </create>
 
    <convert converter="servlet" match="javax.servlet.ServletConfig"/>

create就是配置哪些类是可以由dwr创建的,其包含creator,javascript,creator也是通过init元素进行定义的,creator还有一个javascript的属性,其定义的值就是在javascript中对应的对象名称
convert就是配置哪些java bean是可以通过dwr转换的,其包含converter,match属性,coverter就是选择转换的converter由init中配置,match就是可以转换的java bean

dwr 已经为你提供了大量的creator和converter如:jsf,none,new,pageflow,spring,script,struts这 几种creator,和null,enum,primitive,bignumber,string,array,map,collection, date,dom,dom4j,jdom,xom,servlet,bean,object,hibernate这几种convertor
如果你觉得dwr提供的creator和converter还不能满足你的需求时还可以定制自己的creator和converter把它们部署到dwr.xml中,并把要发布的bean和method放到creators中,

如果你使用dwr的测试页面,你还可以得到一个以你配置的js文件,js文件对你配置的creator和method进行了映射,其中的planApp是 你发布的scriptName,get是发布调用的class方法,p0是方法传入的参数,callback是处理判断成功的标志。
planApp.get = function(p0, callback) {
 
    DWREngine._execute(planApp._path, 'planApp', 'get', p0, callback);
}


现在我们看看dwr在页面上怎样跟服务器交互,dwr为我们提供了一个叫engine.js文件中定义一个DWREngine的javascript对象,其主要功能是处理页面和servlet之间的数据传递和转换。当中有三个函数需要特别的留意

1、_execute由界面的javascript调用根据传入的参数进行一系列的初始化,并调用调用endBatch调用_sendData与服务器的servlet进行交互
其传入的参数主要有
path——在/WEB-INF/web.xml配置的url-pattern,
scriptName——/WEB-INF/dwr.xml中creator的javascript的名称,
methodName——creator的方法名,
vararg_params——传进的值和一些控制参数

2、 _sendData dwr通过这个方法对传入的参数生成与servlet进行交互的javascript语句,它做了很多的工作以保证你的提交是真正的有效,比如判断客户的 浏览器是支持XMLHttpRequest还是支持ActiveXObject,如果两种方式都不行它还会采取iFrame提交的方式与服务器进行交互获 取数据

3、_stateChange DWREngine在判断数据传输完成之后,会根据返回的字符串构造成一个对象

你可以通过修改下面的javascript语句获取返回的javascript对象和你的页面进行交互显示
<script type='text/javascript'>
 
    var reply0 = function(data)
 
    ...{
 
        if (data != null && typeof data == 'object') alert(DWRUtil.toDescriptiveString(data, 2));
 
        else DWRUtil.setValue('d0', DWRUtil.toDescriptiveString(data, 1));
 
    }
 
</script>
分享到:
评论

相关推荐

    DWR.xml配置文件说明书(含源码)

    &lt;creator id="script" class="uk.ltd.getahead.dwr.create.ScriptedCreator"/&gt;这种类型的creator采用BSF执行脚本语言并返回bean.例如 ... &lt;create creator="script" javascript="EmailValidator"&gt; import ...

    DWR配置文件详解,DWR配置

    **DWR配置文件详解** Direct Web Remoting (DWR) 是一种开源的Java库,它允许Web应用程序在客户端JavaScript和服务器端Java之间进行双向通信。DWR的核心配置文件是`dwr.xml`,该文件定义了DWR允许访问的Java对象、...

    dwr框架资料(主要是关于dwr配置文件的说明)

    2. **Convert元素**:DWR提供了自动类型转换机制,将Java对象转化为JavaScript对象,反之亦然。`Convert`元素用于配置这些转换规则。例如: ```xml &lt;convert converter="bean" match=...

    dwr+ssh项目

    &lt;create creator="spring" javascript="DWRques1" scope="application"&gt; &lt;convert converter="bean" match="com.gaojunwei.pojo.Userinfo"/&gt; ``` 这里,`&lt;create&gt;`标签配置了一个Spring管理的bean,名为`...

    dwr配置

    在`&lt;allow&gt;`部分,你需要明确指定哪些类可以被创建(`create`元素)和转换(`convert`元素)。默认情况下,DWR已经支持一些基本类型和常见类的转换,如`String`、`Date`和简单的集合类型。但是,如果要创建新的远程...

    DWR框架配置学习教程

    为了能够传递JavaBean类型的数据,我们需要在`dwr.xml`文件中增加`&lt;convert&gt;`标签: ```xml &lt;dwr&gt; &lt;create creator="new" javascript="testClass"&gt; &lt;param name="class" value="com.dwr.TestClass"/&gt; ...

    DWR中处理List

    &lt;convert converter="bean" match="com.dwr.TestBean"&gt; ,password"/&gt; &lt;/convert&gt; &lt;/dwr&gt; ``` 这里定义了一个名为`testClass`的对象,可以调用`testMethod4`方法。同时,还指定了一个转换器`bean`,用于处理`...

    关于dwr简单设计总结

    DWR的核心功能是在客户端JavaScript和服务器端Java之间建立直接的通信通道,通过AJAX(Asynchronous JavaScript and XML)技术实现异步数据交换。这允许用户在交互过程中动态地更新网页内容,而无需等待整个页面...

    dwr.xml文件的配置和入门使用

    creator 属性指定 Java 类实例的生成方式,例如 "new" 表示 DWR 应当调用类的默认构造函数来获得实例,还有 "spring" 方式,通过与 IOC 容器 Spring 进行集成来获得实例等等。javascript 属性指定 JavaScript 代码...

    dwr与struts2

    &lt;create creator="new" javascript="validator"&gt; &lt;convert converter="bean" match="com.opensymphony.xwork2.ValidationAwareSupport"/&gt; &lt;!-- 其他配置项 --&gt; &lt;/dwr&gt; ``` ### 总结 通过结合使用**DWR**...

    DWR.xml配置文件说明

    `&lt;allow&gt;`元素内部可以包含多个`&lt;create&gt;`和`&lt;convert&gt;`子元素,用于指定可以创建的对象和可以转换的数据类型。 5. **`&lt;signatures&gt;`元素**:用于定义服务端方法的签名,包括方法名、参数类型等信息,帮助客户端...

    dwr的用法解析

    DWR简化了Ajax(Asynchronous JavaScript and XML)的实现,使得开发者无需直接编写复杂的XMLHttpRequest对象操作,而是通过简单的JavaScript调用就能执行服务器端的方法。 1. **无返回值和参数的JAVA方法调用** ...

    dwr配置文件详解

    `convert`子元素定义对象转换规则,`convertor`属性引用已定义的转换器,`match`属性可以是类名或正则表达式,匹配需要转换的类型。 7. **signatures元素**: `&lt;signatures&gt;`部分用于定义JavaScript调用服务器方法...

    dwr用到的相关jar包

    `dwr.jar` 中包含的类和接口,如`DWRServlet`、`RemoteProxy`、`Allow`、`Convert`等,是配置和使用DWR服务时需要了解的重要部分。 其次,`commons-logging-1.1.1.jar` 是Apache Commons Logging库的一个版本,它是...

    dwr详细配置说明和讲解

    Direct Web Remoting (DWR) 是一种开源的Java库,它允许前端JavaScript代码与后端服务器上的Java对象进行直接通信,实现了AJAX(异步JavaScript和XML)的功能。DWR的核心理念是通过JavaScript调用远程Java对象的方法...

    DWR用户保存

    &lt;convert converter="bean" match="com.dwr.domain.User"/&gt; &lt;/dwr&gt; ``` 这里的`creator="spring"`表明我们将使用Spring来实例化这个对象,而`javascript="UserServiceImpl"`定义了在客户端可以使用的JavaScript...

    dwr实战

    &lt;create creator="new" javascript="DealerMonitor"&gt; &lt;convert converter="bean" match="com.vstsoft.dataimport.dto.Dealer"/&gt; &lt;![CDATA[ import java.util.List; import java.util.Map; import ...

    DWR笔记 DWR.xml配置文件说明书 DWR技术分析

    文件主要由三部分组成:`&lt;dwr&gt;`根元素,`&lt;allow&gt;`元素和`&lt;convert&gt;`元素。 2. **&lt;dwr&gt;根元素**:这是整个配置文件的起点,包含所有其他元素。它可以设置全局属性,例如`debug`用于开启或关闭调试模式,`useCaching`...

    ajax框架Dwr的具体使用步骤

    在这个例子中,`creator="spring"`表示使用Spring框架来注入对象,`beanName`属性指定了Spring配置文件中bean的ID。 4. **定义服务器端接口**: 创建一个Java类(如`com.easin.dwr.GetDwr`),该类包含一些方法,...

Global site tag (gtag.js) - Google Analytics