DWR 入门知识进阶四

一、DWR配置说明:
DWR配置文件主要有以下四个部分组成
1、web.xml文件主要配置DWR的后台控制器和配置文件的载入
  <servlet>
<servlet-name>dwr-invoker</servlet-name>
<servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>dwr-invoker</servlet-name>
<url-pattern>/dwr/*</url-pattern>
</servlet-mapping>

2、dwr.xml的初始化配置部分Init
Init是配置DWR主要是配置业务组件的生成规则和基本数据类型的转换器配置。DWR内置了4种业务组件生成规则new、null、spring、scripts。数据类型转换器DWR内置了Boolean等16种转换器。(一般情况下可以不用配置,如果配置重复可能会有无法预料的后果)
(1)、creator元素 主要用于前台JS业务组件对象的生成器如Spring、
New、Scripts等。
<creator id="spring“
class="uk.ltd.getahead.dwr.create.SpringCreator"/>

(2)、converter元素用于配置各种数据类型的转换器如String、Array等。
<converter id="map" 
class="uk.ltd.getahead.dwr.convert.MapConverter"/>

3、dwr.xml的业务组件发布和调用规则配置部分Allow
Allow部分是配置业务组件的发布和访问控制规则的一些参数选项,这部分是DWR配置的重点部分。其主要有以下两个子节点组成:
(1)、create元素 这个元素是配置后台业务组件的创建规则和组件方法的
访问规则。
(2)、convert元素 这个元素是配置Java对象和数据类型对应的转换器。DWR内置了所有java基本数据类型的转换器。基本数据类型的对象形式也采用同一的转换器转换。
3、dwr.xml的业务组件发布和调用规则配置部分Allow
1)Create配置元素详细说明:
[b]属性:[/b]
Creator
配置业务组件的创建类型。主要有四种:Spring、New、 none 、Scripts。
JavaScript
前台页面javascript引用此组件的名称。名称需要唯一。
scope
组件的作用范围或则叫做生命周期。这个和Servlet的生命周期的作用是 一样的。共Session、request、application、page四个选项。
[b]子节点:[/b]
Param
配置业务组件的创建参数。Name属性设置名称,value属性设置业务组件的具体路径(类全名称)。
Include
授权方式保护业务组件方法的可见性。属性method可以访问的方法名称。如果没有配置则默认为所有方法都可以访问。
exclude
排除方式保护业务组件方法的可见性。属性method设置不可以访问的方法名称。除此之外的都可以访问。如果有需要控制业务组件方法的访问权限时建议采用这种方式。
Auth
采用EJB的角色访问控制方式。Method属性设置可以访问的方法名称,role属性设置访问角色。
2)Convert配置元素详细说明:
[b]属性:[/b]
converter
配置数据类型的转换器。一般是设置bean转换器,因为基本类型的转换器DWR默认设置。
match
设置要使用此转换器的java实体对象。如:
<convert converter="bean" match="demo.entity.*"/>
[b]子节点:[/b]Param对象属性的转换规则,name属性设置规则有include和exclude选项,作用和组件方法控制的一样。Value属性设置实体对象的属性。默认是所有属性都进行转换。
4、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>
熟悉C++模板编程或java范型编程的开发人员对这些东西并不陌生。这里主要是采用范型机制来设置bean转换时的集合元素类型。注意DWR有套解析机制所以这里并不需要JDK1.5的支持。

Signatures主要有两个部分:

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

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

二、DWR主要组成部分

[img]http://dl.iteye.com/upload/attachment/233553/9f44889a-db0d-3309-90b4-ed8041f80630.bmp[/img]

2、DWR前台引擎(Engine.js)的主要职责
1)截取每个后台组件的请求实现客户端的统一入口
2)将用于组件调用的JS参数对象重新包装组合
3)检测客户端浏览器的环境并选择最佳的数据提交方案
4)处理后台执行结果并通过执行回调函数通知客户
3、后台控制器(DWRServet)的主要职责
1)装载Servlet时初始化DWR配置参数
2)实现后台业务组件调用的服务器端统一入口
3)分发各种不同类型的请求 JS文件请求 业务调用请求等
4)输出组件执行结果(JavaScript语句)到客户端浏览器
4、业务组件执行器的主要职责
1)根据配置文件的参数确定后台组件的访问规则和生命周期
2)拆包前台传入的参数 包装组件执行结果
3)按参数类型匹配数据类型转换器
4)采用反射机制执行业务组件方法处理客户端请求
5)处理与其他系统的接口和协作 如:Spring Hibernate等
5、数据类型转换器的主要职责
1)将一系列单个的参数转换成对应的Java对象
2)将Java对象转换成JavaScript对象
6、跟踪调式DWR原码详细说明其执行步骤
1) 说明后台组件对应的前台JS文件的结构
2)查看前台JS对象的参数包装后的内部结构
3)查看总控制器分发各种类型请求代码
4)观察业务执行器对浏览器传入参数的再次分类
5)以Bean转换器说明JavaScript和Java数据类型的转换机制
6)说明业务组件执行结果的JavaScript表现形式
7)前台引擎如何处理后台传入的结果并调用回调方法

三、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、付费专栏及课程。

余额充值