dwr学习笔记之dwr.xml

dwr.xml是你用来配置DWR的文件,默认是将其放入WEB-INF文件夹。
创建一个dwr.xml文件
dwr.xml有如下的结构:
     <?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>
    <!-- 没有它DWR什么也做不了 -->
    <allow>
        <create creator="..." javascript="..." />
        <convert converter="..." match="..." />
    </allow>
    <!-- 有必要告诉DWR方法签名 -->
    <signatures>...</signatures>
    </dwr>

每一个在类中被调用的方法需要一个<create …>有若干类型的creator,使用“new”关键字或者Spring 框
架等。
create元素是如下的结构
     <allow>
         <create creator="..." javascript="..." scope="...">
             <param name="..." value="..." />
             <auth method="..." role="..." />
             <exclude method="..." />
             <include method="..." />
         </create>
         ...
     </allow>
2).none: 它不创建对象,看下面的原因。 (v1.1+)
none创建器不创建任何对象,它会假设你不须要创建对象。有2个使用的原因:
?  你可能在使用的scope不是"page"(看上面),并在在前面已经把这个对象创建到这个scope中了,
   这时你就不需要再创建对象了。
?  还有一种情况是要调用的方法是静态的,这时也不需要创建对象。DWR会在调用创建器之前先检
   查一下这个方法是不是静态的。
对于上诉两种情况,你仍然需要class参数,用来告诉DWR它是在操作的对象类型是什么。

     Converter
我们需要确认所有的参数能被转换。许多JDK提供的类型使你能够使用,但是你如果要转换你自己的代码,
就必须告诉DWR。一般是指JavaBean的参数需要一个<convert…>标签作为入口。
你不需要在dwr.xml中<allow>部分的<convert>中定义。它们默认支持。
 所有主要的类型,boolean, int , double等等。
?
 包装类,Boolean, Integer等等。
?
 java.lang.String
?
 java.util.Date 和 java.sql.Times,java.sql.Timestamp。
?
?数组(存放以上类型的)
 集合类型 (List, Set, Map, Iterator等等) (存放以上类型的)
?
 DOM对象(来自于DOM, XOM, JDOM和DOM4J)
两个没有默认打开的转换器是Bean 和 Object 转换器。Bean转换器可以把POJO转换成Javascript的
接合数组(类似与Java中的Map),或者反向转换。这个转换器默认情况下是没打开的,因为DWR要获得
你的允许才能动你的代码。
Object转换器很相似,不同的是它直接应用于对象的成员,而不是通过getter和setter方法。下面的例子
都是可以用object来替换bean的来直接访问对象成员。
如果你有一个在 <create ...> 中声明的远程调用Bean。它有个一参数也是一个bean,并且这个bean有
一个setter存在一些安全隐患,那么攻击者就可能利用这一点。
你可以为某一个单独的类打开转换器:
    <convert converter="bean" match="your.full.package.BeanName"/>
就像你可以在creator的定义中剔出一些方法一样,converter也有类似的定义。
限制属性转换仅仅对于Bean有意义,很明显原生类型是不要需要这个功能的,所以只有
BeanConverter及其子类型(HibernateBeanConverter))有这个功能。
语法是这样的:
<convert converter="bean" match="com.example.Fred">
    <param name="exclude" value="property1, property2" />
</convert>
这就保证了DWR不会调用 fred.getProperty1() 和fred.getProperty2两个方法。


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值