一、 简单的说说dwr.xml的配置文件、dwr.xml的大致如下【实例】:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dwr PUBLIC
"-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN"
"http://getahead.org/dwr/dwr20.dtd">
<dwr>
<init>
<converter id="..." class="..."/>
<creator id="..." class="..."/>
</init>
<allow>
<convert match="com.aokunsang.dwr.bean.PersonBean" converter="bean"></convert>
<create javascript="getPerson" creator="new">
<param name="class" value="com.aokunsang.dwr.server.DwrServer"></param>
<include method="print"/>
<include method="getLength"/>
<include method="getAllPerson"/>
</create>
</allow>
<signatures>
<![CDATA[
import java.util.List;
getPerson.getLength(List<String> list);
]]>
</signatures>
</dwr>
1、<init> 大多数情况下你不需要使用这个标签,因为默认的dwr.xml已经为我们提供了很多常用的creator和converter,详细内容可参见dwr.jar中的org.directwebremoting包中的dwr.xml文件,
<init>
<creator id="jsf" class="org.directwebremoting.faces.JsfCreator"/>
<creator id="none" class="org.directwebremoting.create.NullCreator"/>
<creator id="new" class="org.directwebremoting.create.NewCreator"/>
<creator id="pageflow" class="org.directwebremoting.beehive.PageFlowCreator"/>
<creator id="spring" class="org.directwebremoting.spring.SpringCreator"/>
<creator id="script" class="org.directwebremoting.create.ScriptedCreator"/>
<creator id="struts" class="org.directwebremoting.struts.StrutsCreator"/>
<creator id="ejb3" class="org.directwebremoting.create.Ejb3Creator"/>
<converter id="null" class="org.directwebremoting.convert.NullConverter"/>
<converter id="enum" class="org.directwebremoting.convert.EnumConverter"/>
<converter id="primitive" class="org.directwebremoting.convert.PrimitiveConverter"/>
<converter id="bignumber" class="org.directwebremoting.convert.BigNumberConverter"/>
<converter id="string" class="org.directwebremoting.convert.StringConverter"/>
<converter id="array" class="org.directwebremoting.convert.ArrayConverter"/>
<converter id="map" class="org.directwebremoting.convert.MapConverter"/>
<converter id="collection" class="org.directwebremoting.convert.CollectionConverter"/>
<converter id="date" class="org.directwebremoting.convert.DateConverter"/>
<converter id="dom" class="org.directwebremoting.convert.DOMConverter"/>
<converter id="dom4j" class="org.directwebremoting.convert.DOM4JConverter"/>
<converter id="jdom" class="org.directwebremoting.convert.JDOMConverter"/>
<converter id="xom" class="org.directwebremoting.convert.XOMConverter"/>
<converter id="servlet" class="org.directwebremoting.convert.ServletConverter"/>
<converter id="bean" class="org.directwebremoting.convert.BeanConverter"/>
<converter id="object" class="org.directwebremoting.convert.ObjectConverter"/>
<converter id="hibernate2" class="org.directwebremoting.hibernate.H2BeanConverter"/>
<converter id="hibernate3" class="org.directwebremoting.hibernate.H3BeanConverter"/>
<converter id="url" class="org.directwebremoting.convert.URLConverter"/>
<converter id="exception" class="org.directwebremoting.convert.ExceptionConverter"/>
<converter id="miniException" class="org.directwebremoting.convert.MinimalistExceptionConverter"/>
</init>
这种方式很像Java中的import语句。多数类需要在使用前先import一下,但是import的类并不表明这个类已经被使用了
2、<convert>
a、match属性是bean或者你需要转换的某种Java类型的全类名;
b、converter属性就是你要转换的类型。详见dwr.jar中的org.directwebremoting包中的dwr.xml文件中的<init>,
c、还有一个param属性,针对不同的converter,param参数不同。如:
<convert match="com.aokunsang.dwr.bean.PersonBean"converter="bean">
<param name="exclude或者include" value="property1, property2" />
</convert>
该标签的意思是:包含或者不包含bean中的哪些属性、
3、<create>
a、creator属性使用什么样的构造器创造类的实例,默认为new。还有null[不创建对象],可能的原因有:调用该类的方法是静态方法,dwr调用创建器之前先检查一下该方法是否为静态。详见dwr.jar中的org.directwebremoting包中的dwr.xml文件中的<init>。
b、javascript属性在浏览器里给你创建的对象命名,避免使用JavaScript保留字、
这个名字与导入的js名字一致,
<script type="text/javascript" src="<%=path%>/dwr/interface/getPerson.js"></script>
<script type="text/javascript" src="<%=path%>/dwr/engine.js"></script>
还有在js中调用service类中的方法时的名字也要一致。
function printPerson(){
person = {};
person.name = "jack";
person.age = "12";
person.gender = "男";
getPerson.print(person,{callback:function(data){alert(data);}})
}
function getCount(){
var arr = new Array();
arr[0]=12;
arr[1]=11;
arr[2]=14;
getPerson.getLength(arr,{callback:function(data){alert(data);}})
}
c、param指定创建器的参数,不同的创建器参数不同。
d、include、exclude:include包含哪些方法,其他的不包含,默认该类中的方法全部包含。exclude反之、
4、<signatures>
DWR使用反射机制在转换过程中找到它应该使用的类型。有时候类型的信息无法获得【如泛型,dwr2.0引入了泛型】,在这种情况下你要在此处用方法签名给予暗示。
经测试,如果你的泛型为简单类型,如String,Integer等。<signatures>不写可以正常运行,不过控制台会有警告提示,上篇博文中的实例就可以不写【大家可以试试】。
有一些数据类型不需要我们import,如:String,Map等,详见dwr.jar中的org.directwebremoting包中的dwr.xml文件中的<allow>、
二、 再了解一下dwr的工具js,engine.js、
它有很多方法,在这里只说个别常用的、
1、DWREngine.setXXX 设置全局变量,如:DWREngine.setTimeout(3000);
也可以设置局部的超时时间:如调用回调函数时,可以以对象的形式设置超时,
function getCount(){
var arr = new Array();
arr[0]=12;
arr[1]=11;
arr[2]=14;
getPerson.getLength(arr,
{
callback:function(data){alert(data);},
timeout:3000
})
}
2、DWREngine.beginBatch()和DWREngine.endBatch();这两个方法是同时出现的,如果没有endBatch(),则所有的远程调用都会一直出于队列中。
功能:用来批量执行远程调用来减少反应时间。DWREngine.endBatch()可以设置超时,如:DWREngine.endBatch({timeout:3000});
3、顺序调用DWREngine.setOrdered(Boolean),默认为false、因为Ajax是异步调用,所以远程调用不会按照一定的顺序返回结果,如果你设置了setOrdered(true),dwr将严格按照发送的顺序返回结果,即:DWR会在旧的请求安全无误的返回结果后才会发送新的请求、
【个人建议】:设置为true时,如果一个请求丢失,那么浏览器将会一直处于等待该请求的返回而没有反应、会大大降低你的应用程序的速度,所以在使用之前要考虑好后果,三思而后行、
后续:对于util.js没有了解,大致看了一下,感觉它和jquery一样,对html页面的一些操作,个人感觉还是Jquery使用方便,有空了再看看dwr提供的util.js。
分享到:
相关推荐
**DWR配置文件详解** Direct Web Remoting (DWR) 是一种开源的Java库,它允许Web应用程序在客户端JavaScript和服务器端Java之间进行双向通信。DWR的核心配置文件是`dwr.xml`,该文件定义了DWR允许访问的Java对象、...
在DWR配置文件中,主要分为以下几个部分: 1. **DOCTYPE声明**: 首先,`<!DOCTYPE>`声明指定了DWR的文档类型,这是对DWR版本的引用,确保解析器知道如何解析配置文件。在这个例子中,它引用的是DWR 1.0的DTD...
### dwr 配置文件详解 #### 一、概述 Direct Web Remoting (DWR) 是一种开源框架,它简化了客户端JavaScript与服务器端Java之间的交互。通过DWR,开发者可以直接从JavaScript调用服务器端的方法,而无需使用传统的...
### DWR配置文件详解 #### 一、基本概念与术语 在深入了解DWR配置文件之前,我们首先需要明确几个核心概念: 1. **参数转换**(Conversion):DWR能够处理客户端与服务器端的数据交互,这包括将客户端的...
#### 一、DWR配置文件结构与作用 DWR(Direct Web Remoting)是一个开源的Ajax框架,它允许在浏览器端JavaScript代码直接调用服务器端Java方法,从而简化了传统的AJAX编程。DWR.xml是DWR的核心配置文件,用于定义...
【DWR配置文件详解】 DWR(Direct Web Remoting)是一种强大的AJAX(Asynchronous JavaScript and XML)框架,专门用于Java开发,它允许在Web浏览器中通过JavaScript直接调用后台的Java方法,实现了客户端和服务器...
`dwr.xml`是DWR的核心配置文件,它定义了哪些Java类和方法可以被JavaScript访问。例如: ```xml <dwrfactory name="dwr"> <!-- 允许访问TestService类的sayHello方法 --> <create creator="new" javascript=...
要开始使用DWR,你需要在项目中引入DWR相关的jar包,然后在服务器端创建一个DWR配置文件(通常为dwr.xml),在这个文件中定义哪些Java方法可以被JavaScript调用。接下来,你需要在Java类中编写这些可被远程调用的...
2. **JavaScript调用**:首先需要引入DWR生成的JavaScript接口文件(如TestClass.js)、引擎文件(engine.js)和工具文件(util.js)。然后,可以直接调用生成的JavaScript对象及其方法。 对于具有简单返回值的Java...
3. **`<dwr>`**:这是DWR配置文件的根标签,所有其他配置项都位于此标签内。 4. **`<allow>`**:该标签用于指定哪些类的对象可以通过DWR进行远程调用。在这个例子中,有两个类被允许通过DWR访问,分别是`webapp....
**DWR.xml配置文件详解** 1. **DWR.xml结构**:DWR.xml文件通常位于Web应用的WEB-INF目录下,它是DWR引擎的配置中心,定义了哪些Java类可以被远程调用,以及如何处理这些调用。文件主要由三部分组成:`<dwr>`根元素...
DWR配置详解 DWR(Direct Web Remoting)是一种基于Java的AJAX框架,用于实现Web应用程序的远程方法调用。下面是DWR配置的详细解释: 一、配置环境 1. 导入DWR的依赖jar包,包括dwr.jar和commons-logging.jar。 2...
在DWR配置中, dwr.xml 文件扮演着核心角色,它负责定义远程Bean的配置信息,包括创造器、参数、范围、身份验证等。 ### 术语 在DWR配置中,有一些重要的术语需要理解: * 参数(Parameter):在DWR中,参数是指...
- **dwr.xml**: 这是DWR的核心配置文件,定义了哪些Java类和方法可以被JavaScript访问。在这里,你可以指定允许的远程对象、安全设置以及转换器和验证器等。 - **web.xml**: 在Servlet容器的配置文件中,需要添加...
1. **JavaScript库的引入**:在HTML文件中引入DWR的JavaScript库,如`dwr.engine.js`,以便在客户端使用DWR功能。 2. **接口定义**:在服务器端定义一个或多个Java接口,这些接口将被JavaScript调用。 3. **异步与...
#### 三、DWR配置详解 1. **Servlet配置**:DWR通过`DWRServlet`处理客户端请求。`DWRServlet`必须被正确配置,包括其名称、类名以及映射的URL路径等。 2. **初始化参数**:初始化参数用于设置DWR的行为特性,例如...
任何一个DWR配置文件都需要包含特定的DOCTYPE声明,这是为了确保文件的格式正确并遵循DWR规定的DTD(Document Type Definition)标准。该DTD定义了DWR配置文件的结构和元素。具体格式如下: ```xml <!DOCTYPE dwr ...
5. **引入JavaScript库**:在HTML文件中引入DWR生成的JavaScript接口文件(`testClass.js`)、引擎文件(`engine.js`)以及工具函数库(`util.js`)。 6. **调用Java方法**:在JavaScript代码中,可以直接调用如`...