DWR(Direct Web Remoting)是一个用于改善web页面与Java类交互的远程服务器端Ajax开源框架,可以帮助开发人员开发包含AJAX技术的网站。它可以允许在浏览器里的代码使用运行在WEB服务器上的JAVA函数,就像它就在浏览器里一样。
dwr.xml的大体结构如下:
- <!DOCTYPEdwrPUBLIC
- "-//GetAheadLimited//DTDDirectWebRemoting2.0//EN"
- "http://www.getahead.ltd.uk/dwr/dwr20.dtd">
- //整个配置文件的大体结构如下:
- <dwr init>
- creatorid="..."class="..."/>
- converterid="..."class="..."/>
- </allowcreatecreator="..."javascript="..."scope="..."paramname="..."value="..."createconvertconvertor="..."match="..."signatures ...
- >
<init> 部分声明那些用于建立远程bean和在方法调用中转换bean的类.这部分是可选择性配置的,如果你想定义一个新的creator(创造器)或者converter(转换器),那么就必须在部分中声明,每个creator和converter需要有个id属性来允许以后进行引用。
<allow> 部分定义了DWR能够创建和转换的类,以供javascript 访问。
<create> 标签中指定 javascript 中可以访问的 java 类,并定义 dwr 应当如何获得要进行远程的类的实例。
其中 javascript=" testClass " 属性指定 javascript 代码访问对象时使用的名称。
creator是类构造器,creator="new" 属性指定 java 类实例的生成方式, new 意味着 DWR 应当调用类的默认构造函数来获得实例,其他的还有 spring 方式,通过与 IOC 容器 Spring 进行集成来获得实例等等。
默认情况下DWR1.1有8种创造器。它们是:
- new: 用Java的new关键字创造对象。
- none: 它不创建对象。 (v1.1+)
- scripted:通过BSF使用脚本语言创建对象,例如BeanShell或Groovy。
- spring: 通过Spring框架访问Bean。
- jsf:使用JSF的Bean。 (v1.1+)
- struts:使用Struts的FormBean。 (v1.1+)
- pageflow: 访问Beehive或Weblogic的PageFlow。 (v1.1+)
<param> 标签指定要公开给 javascript 的 java 类名。
<include> 标签指定要公开给 javascript 的方法。不指定的话就公开所有方法。
<auth> 标签指定一个J2EE角色作为访问控制检查。
<convert> 标签由于dwr只支持json的数据格式,因此在dwr中我们要读取javaBean中的属性,就必须将其转换成json的数据格式,这需要配置convert进行转换。
DWR已经默认定义和初始化了常用的Converter,他们分别如下:
- converterid="null"
- class="uk.ltd.getahead.dwr.convert.NullConverter"converterid="primitive"
- class="uk.ltd.getahead.dwr.convert.PrimitiveConverter"converterid="bignumber"
- class="uk.ltd.getahead.dwr.convert.BigNumberConverter"converterid="string"
- class="uk.ltd.getahead.dwr.convert.StringConverter"converterid="date"
- class="uk.ltd.getahead.dwr.convert.DateConverter"converterid="array"
- class="uk.ltd.getahead.dwr.convert.ArrayConverter"converterid="map"
- class="uk.ltd.getahead.dwr.convert.MapConverter"converterid="collection"
- class="uk.ltd.getahead.dwr.convert.CollectionConverter"converterid="bean"
- class="uk.ltd.getahead.dwr.convert.BeanConverter"converterid="hibernate"
- class="uk.ltd.getahead.dwr.convert.HibernateBeanConverter"converterid="dom"
- class="uk.ltd.getahead.dwr.convert.DOMConverter"converterid="dom4j"
- class="uk.ltd.getahead.dwr.convert.DOM4JConverter"converterid="jdom"
- class="uk.ltd.getahead.dwr.convert.JDOMConverter"converterid="xom"
- class="uk.ltd.getahead.dwr.convert.XOMConverter"converterid="servlet"class="uk.ltd.getahead.dwr.convert.ServletConverter"/>
在convert中,还可以设定param进行授权访问控制,例如:
- convertconverter="bean"match="com.tgb.DwrTest"paramname="include"value="property1,property2"convert>
其中include表示只允许value中的属性可以访问,exclude表示除了value中的属性,其他属性均可访问。如果不设定param,则所有属性均可访问。
原文链接:https://www.f2er.com/ajax/162932.html