DWR配置的深层小析

简介:
在dwr.xml配置文件中,allow的子标签convert标签用于配置DWR中参数传递中用到的非基本的对象类型。基本类型有数值型,字符串,简单数组等。如果配有javascript属性,则该对象类型可以显式地在所有用到DWR的JS代码里创建出来,如var sb = new StringBuffer();这样的代价就是所有用到DWR的页面都需要下载该对象的JAVASCRIPT构造函数(由DWR创建),增加了DWR生成的JS文件尺寸。而DWR生成的JS是动态生成的,无法被CACHE,所以性能影响颇大。如果不加javascript属性,可以用var sb = new Object()来实现该数据对象的创建,然后隐式地对属性进行赋值。
allow的子标签create标签用于配置公开的业务对象(或其中指定的函数接口),creator是spring表示用Spring的bean来提供业务对象,beanName参数(create下的param标签)指定具体bean的名字;creator是new时,表示用JAVA类默认构造函数来生成对象来实现DWR对方法的JAVASCRIPT转换,name属性通常为class,而对应值则是类的全路径。create下任意多个的include子标签用method属性指定公布成javascript函数的接口名字,如果没指定include,则默认所有public方法都会被公布成javascript函数,所以这会增加DWR创建的JS文件尺寸(基本每个函数多3-4行javascript代码)。
signatures标签用于声明公开的业务对象方法的调用细节,对DWR的转换目前没看出有什么影响。
<dwr> 
  <allow> 
<convert converter="bean" match="java.lang.StringBuffer" javascript=”StringBuffer”/> 
<create creator="new" javascript="ClassHelper" scope="request"> 
           <param name="class" value="com.companya.projectb.ClassHelper"/> 
</create> 
<create creator="spring" javascript="HandlerImpl" > 
           <param name="beanName" value="handlerImpl"></param> 
           <include method="addStringBuffer"/>             
</create> 
</allow>
  <signatures> 
  <![CDATA[ 
  import java.util.List; 
  import java.lang.StringBuffer;
  HandlerImpl.addStringBuffer(List<StringBuffer>, String[][], boolean ); 
  ]]> 
  </signatures> 
</dwr>
附DWR生成的JS样例:
projectb/dwr/interface/HandlerImpl.js 
//如果StringBuffer有javascript属性声明,则下列构造函数存在。
if (typeof StringBuffer != "function") { 
  var StringBuffer = function() { 
     this.action = null; 
    this.id = null; 
    this.createTime = null; 
    this.lastModifiedTime = null; 
   } 

// Provide a default path to dwr.engine 
if (dwr == null) var dwr = {}; 
if (dwr.engine == null) dwr.engine = {}; 
if (DWREngine == null) var DWREngine = dwr.engine; 
if (HandlerImpl == null) var HandlerImpl = {}; 
HandlerImpl._path = '/projectb/dwr'; 
//For every issued interface. 每个公布的接口方法调用。
pcaEmailHandler.addStringBuffer = function(p0, p1, p2, callback) { 
  dwr.engine._execute(pcaEmailHandler._path, 'pcaEmailHandler', 'addEmail', p0, p1, p2, p3, callback); 
}
 

本文转自 dannyy1026 51CTO博客,原文链接:
http://blog.51cto.com/dannyyuan/338229
相关文章
|
7月前
|
应用服务中间件 容器
分析servlet最深层的源码读懂servlet如何实现
分析servlet最深层的源码读懂servlet如何实现
37 0
|
11天前
|
数据采集 前端开发 Java
数据塑造:Spring MVC中@ModelAttribute的高级数据预处理技巧
数据塑造:Spring MVC中@ModelAttribute的高级数据预处理技巧
23 3
|
6月前
09dwr - dwr.xml配置(纵览)
09dwr - dwr.xml配置(纵览)
29 0
|
存储 Java 索引
Web阶段:第十三章:EL表达式
Web阶段:第十三章:EL表达式
Web阶段:第十三章:EL表达式
|
SQL XML Java
Web阶段:第十四章:JSTL标签库
Web阶段:第十四章:JSTL标签库
Web阶段:第十四章:JSTL标签库
Web阶段:第十八章:Filter过滤器
Web阶段:第十八章:Filter过滤器
Web阶段:第十八章:Filter过滤器
|
Java Spring
快速学习使用springmvc、strust2、strust1以及它们的对比(1)
快速学习使用springmvc、strust2、strust1以及它们的对比
110 0
|
XML 前端开发 安全
快速学习使用springmvc、strust2、strust1以及它们的对比(2)
快速学习使用springmvc、strust2、strust1以及它们的对比
187 0
|
缓存 移动开发 前端开发
从 SWR 开始 — 一窥现代请求 hooks 设计模型
本文将以 swr 为例子,讲述现在最热门的 useRequest、swr 和 react-query 三个请求 hooks 的新机制,以及新机制后 class Component 和 hooks 在设计上的区别。
从 SWR 开始 — 一窥现代请求 hooks 设计模型
|
Web App开发 数据库 uml
Web应用开发方法研究
目前,Web系统开发缺乏严格和系统的方法,大多数应用开发和管理实践在很大程度上依赖于开发人员个人的知识和经验,造成的后果是所开发的Web系统大多是低质量的产品。而传统的软件工程方法不能适应Web设计的要求,为此人们研究提出了众多的Web开发方法。
1412 0