<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting
2.0//EN" "http://www.getahead.ltd.uk/dwr/dwr20.dtd">
<dwr>
<!-- 仅当需要扩展DWR时才需要 -->
<init>
<creator id="..." class="..." />
<converter id="..." class="..." />
</init>
<!--
这个初始化部分申明被用来创建远程beans 而且这个类能被用来以某种过程转换。
大多数例子你将不需要用它,如果你想去定义一个新的Creator 或者Converter,就要在此被申明。
在init部分里有了定义只是告诉DWR这些扩展类的存在,给出了如何使用的信息。这时他们还没有被使
用。这种方式很像Java中的import语句。多数类需要在使用前先import一下,但是只有import 语句并不
表明这个类已经被使用了。每一个creator 和converter都用id属性,以便后面使用。
再说明白点就是:
让DWR知道通过XMLHttpRequest对象,什么对象将会接收请求
下面这种写法是把该类让JS看到,但是只是可以用其中指定的两个函数,相应函数用<include>标签来指定
<create creator="new" javascript="ApartmentDAO" class="dwr.sample.ApartmentDAO">
<include method="findApartments"/>
<include method="countApartments"/>
</create>
-->
<!-- 没有它DWR什么也做不了 -->
<allow>
<create creator="..." javascript="..." />
<convert converter="..." match="..." />
</allow>
<!--
allow部分定义了DWR能够创建和转换的类。
每一个在类中被调用的方法需要一个<create >有若干类型的creator
使用“new”关键字或者Spring 框架等。
<allow>
<create creator="..." javascript="..." scope="...">
<param name="..." value="..." />
<auth method="..." role="..." />
<exclude method="..." />
<include method="..." />
</create>
...
</allow>
creator 属性
1).new:Java 用“new”关键字创造对象
是DWR默认的creator,如下所示
<create id="new" class="org.directwebremoting.create.NewCreator"/>
没有必要把它加入dwr.xml,它已经在DWR内部文件了。
这个creator将使用默认构造器创建类的实例,以下是用new创建器的好处
安全:DWR创造的对象生存的时间越短,多次调用中间的值不一致的错误机会越少。
内存消耗低: 如果你的站点用户量非常大,这个创造器可以减少VM 的内存溢出。
2).none: 它不创建对象,看下面的原因。 (v1.1+)
none创建器不创建任何对象,它会假设你不须要创建对象。有2个使用的原因:
你可能在使用的scope不是"page"(看上面),并在在前面已经把这个对象创建到这个scope中了,
这时你就不需要再创建对象了。 还有一种情况是要调用的方法是静态的,这时也不需要创建对象。DWR 会在调用创建器之前先检
查一下这个方法是不是静态的。
对于上诉两种情况,你仍然需要class参数,用来告诉DWR它是在操作的对象类型是什么。
3). scripted: 通过BSF使用脚本语言创建对象,例如BeanShell或Groovy。
要使用这个创造器,你需要把一些辅助库放到WEB-INF/lib文件夹下:比如BSF的 jar包 ,你要用
的脚本 jar包 。
new创造器在 DWR中已经默认声明了:
<creator id="script" class="uk.ltd.getahead.dwr.create.ScriptedCreator"/>
这个创造器用BSF来执行脚本 Bean,例如:
new创造器在 DWR中已经默认声明了:
<creator id="script" class="uk.ltd.getahead.dwr.create.ScriptedCreator"/>
这个创造器用BSF来执行脚本得到 Bean,例如:
-->
<!-- 有必要告诉DWR方法签名 -->
<signatures>...</signatures>
</dwr>