Download presentation
Presentation is loading. Please wait.
Published byAllen Campbell Modified 6年之前
1
DWR WEB开发交流 1、自我介绍 2、DWR概述 3、DWR DEMO介绍 4、DWR实现机制 5、DWR配置说明 6、JS开发注意事项
2
DWR WEB开发交流 2、 DWR (Direct Web Remoting )概述
3
DWR WEB开发交流 2、 DWR (Direct Web Remoting )概述
DWR是一种AJAX(Asynchronous JavaScript and XML)的JAVA实现,它提供了一种能在web浏览器端采用JavaScript语言直接调用后台业务商业组件的解决方案。DWR通过JavaScript直接调用远程组件可以减少Web开发的时间,特别对于那些具有和用户频繁交互的Web应用程序。DWR使得浏览器不用刷新页面就可以从远程Web服务器取得用户需的数据,这种无刷新页面的交互方式大大提高Web页面的响应时间。至少用户不会感觉到刷新页面带来的等待响应心理感觉。DWR采用浏览器端采用纯JavaScript实现,并且会自动根据浏览器类型采用最高效率的远程组件调用机制。DWR目前最新发布的稳定版本为1.0。本次项目中采用的也是目前的最新发布版本1.0。
4
DWR WEB开发交流 2、 DWR (Direct Web Remoting )概述 DWR所带来的
彻底分离表现和业务逻辑,让糟糕的Scriptlets代码从此从Web页面上消失。 展现页面只需加载一次节省网络带宽、提高用户响应响应时间。实际 应用中HTML页面标记数据量远远大于真正使用的数据量,资源重复浪 费不容忽视。 页面代码对页面展现样式没有任何的破坏型影响,程序员不再担心因编码而破坏页面展现样式细节。提高Web开发效率和速度。 Web服务器的Servlet容器可以节省管理成千万个Servlet生命周期的资源开销。这是确实是个振奋人心的好消息。
5
DWR WEB开发交流 3、DWR DEMO介绍
通过一个Demo简要说明DWR技术开发Web应用程序的主要步骤和配置规则。从而达到对DWR有个概要层面上的了解和认识,这对下一步DWR实现机制的介绍会有比较好的促进效果。 1、 编写服务器段逻辑代码。代码尽量能够覆盖DWR开发的多个方面,具有比较强的代表性。 2、 简要演示DWR的配置文件的配置和与WEB应用的集成方法。 3、 编写Web端调用服务器端代码事例,主要体现异步处理,回掉函数,JS代码对象结构,Map对象构件,实用组件介绍。
6
DWR WEB开发交流 3、DWR DEMO介绍 JavaScript Java Array数组 List、Collection、数组
Boolean Object Map、Java Bean String Date Numbers Int、double、float等数值 XML Dom Dom undefined null
7
DWR WEB开发交流 3、DWR DEMO介绍 2、Java组件的编写和发布以及客户端引用
实体类必须遵循Java Bean规范即实现Getter和Setter 配置文件中Allow部分的Create元素的JavaScript属性的值要唯一 如果存在Java Bean需要转换则要配置Allow部分的Convert元素 客户端引用业务组件要以dwr/interface/xxx.js的路径引用JS文件
8
DWR WEB开发交流 3、DWR DEMO介绍 3、典型调用示例和回调函数 简单字符串示例 Map集合类型示例 List集合类型示例
组合对象输出示例 组合对象输出示例 两种回调函数的写法和使用场合
9
DWR WEB开发交流 4、DWR 实现机制 1、DWR主要组成部分 JS引擎 总控制器 组件执行器 数据转换器
10
DWR WEB开发交流 4、DWR 实现机制 1、DWR前台引擎(Engine.js)的主要职责 截取每个后台组件的请求实现客户端的统一入口
检测客户端浏览器的环境并选择最佳的数据提交方案 处理后台执行结果并通过执行回调函数通知客户
11
DWR WEB开发交流 4、DWR 实现机制 2、后台控制器(DWRServet)的主要职责 装载Servlet时初始化DWR配置参数
实现后台业务组件调用的服务器端统一入口 分发各种不同类型的请求 JS文件请求 业务调用请求等 输出组件执行结果(JavaScript语句)到客户端浏览器
12
DWR WEB开发交流 4、DWR 实现机制 3、业务组件执行器的主要职责 根据配置文件的参数确定后台组件的访问规则和生命周期
拆包前台传入的参数 包装组件执行结果 按参数类型匹配数据类型转换器 采用反射机制执行业务组件方法处理客户端请求 处理与其他系统的接口和协作 如:Spring Hibernate等
13
DWR WEB开发交流 4、DWR 实现机制 4、数据类型转换器的主要职责 将一系列单个的参数转换成对应的Java对象
将Java对象转换成JavaScript对象
14
DWR WEB开发交流 4、DWR 实现机制 5、跟踪调式DWR原码详细说明其执行步骤 说明后台组件对应的前台JS文件的结构
查看总控制器分发各种类型请求代码 观察业务执行器对浏览器传入参数的再次分类 以Bean转换器说明JavaScript和Java数据类型的转换机制 说明业务组件执行结果的JavaScript表现形式 前台引擎如何处理后台传入的结果并调用回调方法
15
DWR WEB开发交流 5、DWR配置说明 DWR配置文件主要有以下四个部分组成
1、web.xml文件主要配置DWR的后台控制器和配置文件的载入(略) 2、dwr.xml的初始化配置部分Init 3、dwr.xml的业务组件发布和调用规则配置部分Allow 4、dwr.xml的业务组件方法签名配置部分Signatures
16
DWR WEB开发交流 5、DWR配置说明 2、dwr.xml的初始化配置部分Init
Init是配置DWR主要是配置业务组件的生成规则和基本数据类型的转换器配置。DWR内置了4种业务组件生成规则new、null、spring、scripts。数据类型转换器DWR内置了Boolean等16种转换器。(一般情况下可以不用配置,如果配置重复可能会有无法预料的后果) 一、creator元素 主要用于前台JS业务组件对象的生成器如Spring、 New、Scripts等。 <creator id="spring“ class="uk.ltd.getahead.dwr.create.SpringCreator"/> 二、converter元素用于配置各种数据类型的转换器如String、Array等。 <converter id="map" class="uk.ltd.getahead.dwr.convert.MapConverter"/>
17
DWR WEB开发交流 5、DWR配置说明 3、dwr.xml的业务组件发布和调用规则配置部分Allow
Allow部分是配置业务组件的发布和访问控制规则的一些参数选项,这部分是DWR配置的重点部分。其主要有以下两个子节点组成: 一、create元素 这个元素是配置后台业务组件的创建规则和组件方法的 访问规则。 二、convert元素 这个元素是配置Java对象和数据类型对应的转换器。DWR内置了所有java基本数据类型的转换器。基本数据类型的对象形式也采用同一的转换器转换。
18
DWR WEB开发交流 5、DWR配置说明 5、DWR配置说明 3、dwr.xml的业务组件发布和调用规则配置部分Allow
Create配置元素详细说明: 属性: Creator 配置业务组件的创建类型。主要有四种:Spring、New、 none 、Scripts。 JavaScript 前台页面javascript引用此组件的名称。名称需要唯一。 scope 组件的作用范围或则叫做生命周期。这个和Servlet的生命周期的作用是 一样的。共Session、request、application、page四个选项。
19
DWR WEB开发交流 5、DWR配置说明 5、DWR配置说明 3、dwr.xml的业务组件发布和调用规则配置部分Allow
Create配置元素详细说明: 子节点: Param 配置业务组件的创建参数。Name属性设置名称,value属性设置业务组件的具体路径(类全名称)。 Include 授权方式保护业务组件方法的可见性。属性method可以访问的方法名称。如果没有配置则默认为所有方法都可以访问。 exclude 排除方式保护业务组件方法的可见性。属性method设置不可以访问的方法名称。除此之外的都可以访问。如果有需要控制业务组件方法的访问权限时建议采用这种方式。 Auth 采用EJB的角色访问控制方式。Method属性设置可以访问的方法名称,role属性设置访问角色。
20
DWR WEB开发交流 5、DWR配置说明 5、DWR配置说明 3、dwr.xml的业务组件发布和调用规则配置部分Allow
Convert配置元素详细说明: 属性: converter 配置数据类型的转换器。一般是设置bean转换器,因为基本类型的转换器DWR默认设置。 match 设置要使用此转换器的java实体对象。如: <convert converter="bean" match="demo.entity.*"/> 子节点: Param对象属性的转换规则,name属性设置规则有include和exclude选项,作用和组件方法控制的一样。Value属性设置实体对象的属性。默认是所有属性都进行转换。
21
DWR WEB开发交流 5、DWR配置说明 5、DWR配置说明 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>
22
DWR WEB开发交流 5、DWR配置说明 5、DWR配置说明 4、dwr.xml的业务组件方法签名配置部分Signatures
熟悉C++模板编程或java范型编程的开发人员对这些东西并不陌生。这里主要是采用范型机制来设置bean转换时的集合元素类型。注意DWR有套解析机制所以这里并不需要JDK1.5的支持。 Signatures主要有两个部分: Import部分 和java文件的作用一样 另一部分对方法的签名进行范型的设定。返回结果的集合元素类型不需要设置,因为可以在运行时确定。
23
DWR WEB开发交流 6、JS开发注意事项 1、要注意DWR异步机制带来的数据可能不同步问题
2、返回结果只能是一个值所以要详细设计返回结果类型 3、要注意Java引用传递和JavaScript值传递的差异 4、连续多次后台请求尽量采用批量调用 5、尽量将JavaScript的逻辑处理代码抽取成一个独立的文件
Similar presentations