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
相关文章
|
机器学习/深度学习 传感器 编解码
再谈注意力机制 | 运用强化学习实现目标特征提取
再谈注意力机制 | 运用强化学习实现目标特征提取
再谈注意力机制 | 运用强化学习实现目标特征提取
|
4月前
|
机器学习/深度学习 人工智能
类人神经网络再进一步!DeepMind最新50页论文提出AligNet框架:用层次化视觉概念对齐人类
【10月更文挑战第18天】这篇论文提出了一种名为AligNet的框架,旨在通过将人类知识注入神经网络来解决其与人类认知的不匹配问题。AligNet通过训练教师模型模仿人类判断,并将人类化的结构和知识转移至预训练的视觉模型中,从而提高模型在多种任务上的泛化能力和稳健性。实验结果表明,人类对齐的模型在相似性任务和出分布情况下表现更佳。
100 3
|
10天前
|
机器学习/深度学习 人工智能 算法
《探秘卷积神经网络的核心—卷积核》
卷积神经网络(CNN)在图像和语音识别等领域取得显著成就,卷积核作为其核心组件发挥关键作用。卷积核是滑动于输入数据上的小矩阵,通过卷积操作提取特征,参数共享机制减少模型复杂度并提高鲁棒性。不同类型的卷积核(如标准、深度可分离和扩张卷积核)适用于多种任务,为CNN的成功奠定基础。
|
10天前
|
机器学习/深度学习 人工智能 计算机视觉
《深度剖析:一文读懂卷积神经网络中的感受野》
感受野是卷积神经网络(CNN)中关键概念,指神经元在输入数据中对应的区域大小。它影响模型对特征的捕捉能力,决定局部与全局特征的提取。单层卷积的感受野由卷积核大小、步长和填充决定;多层卷积时感受野会逐层累加扩大。合适感受野能提升模型性能,过大或过小都会影响效果。调整感受野可通过改变卷积核大小、步长或使用空洞卷积实现。深入理解感受野有助于优化CNN设计,推动AI技术发展。
|
3月前
|
机器学习/深度学习 自然语言处理 数据可视化
【由浅到深】从神经网络原理、Transformer模型演进、到代码工程实现
阅读这个文章可能的收获:理解AI、看懂模型和代码、能够自己搭建模型用于实际任务。
237 11
|
5月前
|
机器学习/深度学习 存储 算法
Transformer、RNN和SSM的相似性探究:揭示看似不相关的LLM架构之间的联系
通过探索大语言模型(LLM)架构之间的潜在联系,我们可能开辟新途径,促进不同模型间的知识交流并提高整体效率。尽管Transformer仍是主流,但Mamba等线性循环神经网络(RNN)和状态空间模型(SSM)展现出巨大潜力。近期研究揭示了Transformer、RNN、SSM和矩阵混合器之间的深层联系,为跨架构的思想迁移提供了可能。本文深入探讨了这些架构间的相似性和差异,包括Transformer与RNN的关系、状态空间模型在自注意力机制中的隐含作用以及Mamba在特定条件下的重写方式。
225 7
Transformer、RNN和SSM的相似性探究:揭示看似不相关的LLM架构之间的联系
|
7月前
|
机器学习/深度学习 人工智能 自然语言处理
深度之眼(二十六)——神经网络基础知识(一)
深度之眼(二十六)——神经网络基础知识(一)
|
9月前
|
机器学习/深度学习 数据可视化 计算机视觉
【YOLOv8改进】MCA:用于图像识别的深度卷积神经网络中的多维协作注意力 (论文笔记+引入代码)
YOLO目标检测专栏介绍了YOLO的创新改进和实战案例,包括多维协作注意力(MCA)机制,它通过三分支架构同时处理通道、高度和宽度注意力,提高CNN性能。MCA设计了自适应组合和门控机制,增强特征表示,且保持轻量化。该模块适用于各种CNN,实验证明其在图像识别任务上的优越性。此外,文章还展示了如何在YOLOv8中引入MCA层的代码实现和相关任务配置。
|
9月前
|
机器学习/深度学习 数据挖掘 测试技术
DETR即插即用 | RefineBox进一步细化DETR家族的检测框,无痛涨点
DETR即插即用 | RefineBox进一步细化DETR家族的检测框,无痛涨点
459 1
|
人工智能 自然语言处理 计算机视觉
12种模态,一个学习框架,Meta-Transformer实现骨干网络大一统
12种模态,一个学习框架,Meta-Transformer实现骨干网络大一统
104 0

热门文章

最新文章