使用<create.../>元素配置创建器:
<!-- creator指定所使用的创建器,javascript指定所生成的javascript对象名 , scope指定所生成的javascript对象放到哪个范围--> <create creator="..." javascript="..." scope="..."> <!-- 不同的创建器的param元素时不一样 --> <param name="..." value="..."/> <!-- 指定一个J2ee角色,只有具有auth指定的角色才可以访问该对象的方法 --> <auth role="..." method="..."/> <!-- 指定不被暴露的方法 --> <exclude method="..."/> <!-- exclude的方向 --> <include method="..."/> </create>
DWR提供的创建器:
(1)new:使用new关键字来创建实例
(2)none:不创建任何实例
(3)script:使用脚本语言,如BeanShell或Groovy通过BSF创建实例
(4)spring:直接使用Spring容器中的Bean,用于DWR和Spring的整合
(5)jsf:直接使用JSF的Bean,用dwr与jsf的整合
(6)struts:直接使用Struts的FormBean,用于Struts和Dwr的整合
(7)pageflow:直接访问Weblogic或Beehive的pageFlow
对于com.dwr.HelloDwr类的创建配置,如果不希望暴露abc()方法:
<create creator="new" javascript="wang"> <param name="class" value="com.dwr.HelloDwr"/> <exclude method="abc"/> </create>
对于com.dwr.HelloDwr类的创建配置,如果只希望暴露abc()方法:(include配置安全性更高)
<create creator="new" javascript="wang"> <param name="class" value="com.dwr.HelloDwr"/> <include method="abc"/> </create>
JAAS支持:
<create creator="new" javascript="wang"> <param name="class" value="com.dwr.HelloDwr"/> <!-- 只有角色li才可以访问abc方法 --> <auth role="li" method="abc"/> </create>
如果使用自定义的创建器,则需要在dwr.xml的<init../>中注册:
<init> <creator class="com.wang.create.MyCreator" id="my"/> </init>
none创建器:
当需要使用的对象不是来自当前的page而是来自session或application,则此时无需再次创建,当调用的java 方法是静态方法,也无需创建