dwr配置文件说明

dwr.xml格式:

<!DOCTYPE dwr PUBLIC
"-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN"
"http://www.getahead.ltd.uk/dwr/dwr10.dtd">
<dwr>
<init>
<creator id="..." class="..."/>
<converter id="..." class="..."/>
</init>
<allow>
<create creator="..." javascript="..." scope="...">
<param name="..." value="..."/>
</create>
<convert convertor="..." match="..."/>
</allow>
<signatures>
...
</signatures>
</dwr>


参数叫做converted,远程Bean叫做created

DWR已经默认定义和初始化了常用的Converter:

<converter id="null"
class="uk.ltd.getahead.dwr.convert.NullConverter"/>
<converter id="primitive"
class="uk.ltd.getahead.dwr.convert.PrimitiveConverter"/>
<converter id="bignumber"
class="uk.ltd.getahead.dwr.convert.BigNumberConverter"/>
<converter id="string"
class="uk.ltd.getahead.dwr.convert.StringConverter"/>
<converter id="date"
class="uk.ltd.getahead.dwr.convert.DateConverter"/>
<converter id="array"
class="uk.ltd.getahead.dwr.convert.ArrayConverter"/>
<converter id="map"
class="uk.ltd.getahead.dwr.convert.MapConverter"/>
<converter id="collection"
class="uk.ltd.getahead.dwr.convert.CollectionConverter"/>
<converter id="bean"
class="uk.ltd.getahead.dwr.convert.BeanConverter"/>
<converter id="hibernate"
class="uk.ltd.getahead.dwr.convert.HibernateBeanConverter"/>
<converter id="dom"
class="uk.ltd.getahead.dwr.convert.DOMConverter"/>
<converter id="dom4j"
class="uk.ltd.getahead.dwr.convert.DOM4JConverter"/>
<converter id="jdom"
class="uk.ltd.getahead.dwr.convert.JDOMConverter"/>
<converter id="xom"
class="uk.ltd.getahead.dwr.convert.XOMConverter"/>
<converter id="servlet" class="uk.ltd.getahead.dwr.convert.ServletConverter"/>


Array的配置项目:

<convert converter="array" match="[Z"/>
<convert converter="array" match="[B"/>
<convert converter="array" match="[S"/>
<convert converter="array" match="[I"/>
<convert converter="array" match="[J"/>
<convert converter="array" match="[F"/>
<convert converter="array" match="[D"/>
<convert converter="array" match="[C"/>
<convert converter="array" match="[L*"/>


Bean Converter

<convert converter="bean" match="your.full.package.BeanName"/>


指定属性转换只有针对bean才有效

<convert converter="bean" match="com.example.Fred"/>
<param name="exclude" value="property1, property2"/>
</convert>


授权访问方式

<convert converter="bean" match="com.example.Fred"/>
<param name="include" value="property1, property2"/>
</convert>


Maps和Collections converter

<convert converter="collection" match="java.util.Collection"/>
<convert converter="map" match="java.util.Map"/>


creator
Creator Parameter User
new class 类的全名称(包括包路径)
scripted language BSF框架支持的脚本语言名称(BSF为apache项目)
scripted script 返回远程对象的脚本,脚本可以指定一些属性,多数情况下一般只设置param节点配置.属性很少设置.
spring Location* 任何以location开头的参数,每个参数都是指定一个spring的配置文件,在参数没有设置的情况下DWR会去读取spring的全局的配置文件.
spring beanName 从配置文件中读取的bean的名称



fan访问权限

如果要设置除了setWibble方法之外的所有方法都不可访问可以采用下面的设置.

<create creator="new" javascript="Fred">
<param name="class" value="com.example.Fred"/>
<exclude method="setWibble"/>
</create>

如果采用j2ee访问角色控制的模式

<create creator="new" javascript="Fred">
<param name="class" value="com.example.Fred"/>
<auth method="setWibble" role="admin"/>
</create>


DWR的引擎文件,他承担着把后台自动生成的javascript接口与前台调用之间的衔接责任

<script type='text/javascript'
src='/[YOUR-WEB-APP]/dwr/engine.js'>
</script>


Java组件的编写和发布以及客户端引用
Java组件必须是一个具体类(因为接口、抽象类反射机制无法实例化)
实体类必须遵循Java Bean规范即实现Getter和Setter
配置文件中Allow部分的Create元素的JavaScript属性的值要唯一
如果存在Java Bean需要转换则要配置Allow部分的Convert元素
客户端引用业务组件要以dwr/interface/xxx.js的路径引用JS文件

DWR前台引擎(Engine.js)的主要职责:
截取每个后台组件的请求实现客户端的统一入口
将用于组件调用的JS参数对象重新包装组合
检测客户端浏览器的环境并选择最佳的数据提交方案
处理后台执行结果并通过执行回调函数通知客户

后台控制器(DWRServet)的主要职责
装载Servlet时初始化DWR配置参数
实现后台业务组件调用的服务器端统一入口
分发各种不同类型的请求 JS文件请求 业务调用请求等
输出组件执行结果(JavaScript语句)到客户端浏览器

业务组件执行器的主要职责
根据配置文件的参数确定后台组件的访问规则和生命周期
拆包前台传入的参数 包装组件执行结果
按参数类型匹配数据类型转换器
采用反射机制执行业务组件方法处理客户端请求
处理与其他系统的接口和协作 如:Spring Hibernate等

dwr.xml的业务组件发布和调用规则配置部分Allow
Create配置元素详细说明:
属性:
Creator
配置业务组件的创建类型。主要有四种:Spring、New、 none 、Scripts。
JavaScript
前台页面javascript引用此组件的名称。名称需要唯一。
scope
组件的作用范围或则叫做生命周期。这个和Servlet的生命周期的作用是 一样的。共Session、request、application、page四个选项。
子节点:
Param
配置业务组件的创建参数。Name属性设置名称,value属性设置业务组件的具体路径(类全名称)。
Include
授权方式保护业务组件方法的可见性。属性method可以访问的方法名称。如果没有配置则默认为所有方法都可以访问。
exclude
排除方式保护业务组件方法的可见性。属性method设置不可以访问的方法名称。除此之外的都可以访问。如果有需要控制业务组件方法的访问权限时建议采用这种方式。
Auth
采用EJB的角色访问控制方式。Method属性设置可以访问的方法名称,role属性设置访问角色。

Convert配置元素详细说明:
属性:
converter
配置数据类型的转换器。一般是设置bean转换器,因为基本类型的转换器DWR默认设置。
match
设置要使用此转换器的java实体对象。如:

<convert converter="bean" match="demo.entity.*"/>

子节点:
Param对象属性的转换规则,name属性设置规则有include和exclude选项,作用和组件方法控制的一样。Value属性设置实体对象的属性。默认是所有属性都进行转换。

dwr.xml的业务组件方法签名配置部分Signatures
Signatures是用来配置Java Bean数据类型转换时遇到不能确定转换类型的情况。如:
Bean.setList(List a)方法,DWR设置集合a的时候就无法确定a这个集合里需要填充哪种数据类型。所以针对有输入集合对象的情况就需额外设置Signatures配置节点来设置。这个节点的配置如下:

<signatures>
<![CDATA[
import java.util.List;
import demo.entity.*;
import demo.busi.*;

Customer.setAccounts(List<Account> accounts);
DemoBusinessObject.getListSet(List<Contact> inList);
]]>
</signatures>


Signatures主要有两个部分:

Import部分 和java文件的作用一样

另一部分对方法的签名进行范型的设定。返回结果的集合元素类型不需要设置,因为可以在运行时确定。

JS开发注意事项
1、要注意DWR异步机制带来的数据可能不同步问题
2、返回结果只能是一个值所以要详细设计返回结果类型
3、要注意Java引用传递和JavaScript值传递的差异
4、连续多次后台请求尽量采用批量调用
5、尽量将JavaScript的逻辑处理代码抽取成一个独立的文件
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值