Dwr具体是什么

前端之家收集整理的这篇文章主要介绍了Dwr具体是什么前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。


DWR(Direct Web Remoting)是一个用于改善web页面与Java类交互的远程服务器端Ajax开源框架,可以帮助开发人员开发包含AJAX技术的网站。它可以允许在浏览器里的代码使用运行在WEB服务器上的JAVA函数,就像它就在浏览器里一样。

dwr.xml的大体结构如下:

[html] view plain copy
  1. <!DOCTYPEdwrPUBLIC
  2. "-//GetAheadLimited//DTDDirectWebRemoting2.0//EN"
  3. "http://www.getahead.ltd.uk/dwr/dwr20.dtd">
  4. //整个配置文件的大体结构如下:
  5. @H_502_52@<dwr @H_502_52@init@H_502_52@>
  6. creatorid="..."class="..."@H_502_52@/>
  7. converterid="..."class="..."@H_502_52@/>
  8. </allow@H_502_52@createcreator="..."javascript="..."scope="..."@H_502_52@paramname="..."value="..."@H_502_52@create@H_502_52@convertconvertor="..."match="..."@H_502_52@signatures ...
  9. >


<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+)
还有一个属性为scope默认为page,其值还有application、session、request、script。
<creator>下的配置节点:

<param> 标签指定要公开给 javascript 的 java 类名。

<include> 标签指定要公开给 javascript 的方法不指定的话就公开所有方法

<exclude> 标签指定要防止被访问的方法

<auth> 标签指定一个J2EE角色作为访问控制检查。


<convert> 标签由于dwr只支持json的数据格式,因此在dwr中我们要读取javaBean中的属性,就必须将其转换成json的数据格式,这需要配置convert进行转换。

DWR已经默认定义和初始化了常用的Converter,他们分别如下:

    converterid="null"
  1. class="uk.ltd.getahead.dwr.convert.NullConverter"@H_502_52@converterid="primitive"
  2. class="uk.ltd.getahead.dwr.convert.PrimitiveConverter"@H_502_52@converterid="bignumber"
  3. class="uk.ltd.getahead.dwr.convert.BigNumberConverter"@H_502_52@converterid="string"
  4. class="uk.ltd.getahead.dwr.convert.StringConverter"@H_502_52@converterid="date"
  5. class="uk.ltd.getahead.dwr.convert.DateConverter"@H_502_52@converterid="array"
  6. class="uk.ltd.getahead.dwr.convert.ArrayConverter"@H_502_52@converterid="map"
  7. class="uk.ltd.getahead.dwr.convert.MapConverter"@H_502_52@converterid="collection"
  8. class="uk.ltd.getahead.dwr.convert.CollectionConverter"@H_502_52@converterid="bean"
  9. class="uk.ltd.getahead.dwr.convert.BeanConverter"@H_502_52@converterid="hibernate"
  10. class="uk.ltd.getahead.dwr.convert.HibernateBeanConverter"@H_502_52@converterid="dom"
  11. class="uk.ltd.getahead.dwr.convert.DOMConverter"@H_502_52@converterid="dom4j"
  12. class="uk.ltd.getahead.dwr.convert.DOM4JConverter"@H_502_52@converterid="jdom"
  13. class="uk.ltd.getahead.dwr.convert.JDOMConverter"@H_502_52@converterid="xom"
  14. class="uk.ltd.getahead.dwr.convert.XOMConverter"@H_502_52@converterid="servlet"class="uk.ltd.getahead.dwr.convert.ServletConverter"@H_502_52@/>

在convert中,还可以设定param进行授权访问控制,例如:

    convertconverter="bean"match="com.tgb.DwrTest"@H_502_52@paramname="include"value="property1,property2"@H_502_52@convert@H_502_52@>

其中include表示只允许value中的属性可以访问,exclude表示除了value中的属性,其他属性均可访问。如果不设定param,则所有属性均可访问。

猜你在找的Ajax相关文章