DWR(Direct Web Remoting)是一个用于改善web页面与Java类交互的远程服务器端Ajax开源框架,可以帮助开发人员开发包含AJAX技术的网站.它可以允许在浏览器里的代码使用运行在WEB服务器上的JAVA函数,就像它就在浏览器里一样。在介绍DWR之前呢,先简要介绍一下Ajax。其实和DWR配置的相关性不大,只是希望大家重温一下Ajax的使用。
(1)Ajax的代码部分:
<script type="text/javascript">
var xmlHttpRequest;
<!--根据浏览器类型解析xmlHttpRequest-->
function createXmlHttpRequest() {
if (window.ActiveXObject) {
return new ActiveXObject("Microsoft.XMLHTTP");
} else if (window.XMLHttpRequest) {
return new XMLHttpRequest();
}
}
//POST形式
function doRequestUsingPost() {
url = "GetAndPostXml?";
xmlHttpRequest = createXmlHttpRequest();
xmlHttpRequest.open("POST", url, true);
xmlHttpRequest.onreadystatechange = parseResult;
//让服务器知道请求体中有参数
xmlHttpRequest.setRequestHeader("Content-Type","application/x-www-form-urlencoded;");
xmlHttpRequest.send(stringQuery());//参数表
}
//GET形式
function doRequestUsingGet(){
url="GetAndPostXml?"+stringQuery();
xmlHttpRequest=createXmlHttpRequest();
xmlHttpRequest.open("GET",url,true);
xmlHttpRequest.onreadystatechange=parseResult;
xmlHttpRequest.send(null);
}
//构造参数传递的方法
function stringQuery() {
var userName = document.getElementById("userName").value;
var passWord = document.getElementById("passWord").value;
var strQuery = "userName=" + userName+"&passWord="+passWord;
return strQuery;
}
<!--回调函数-->//在传递的Servlet中out.print(xxx),out.println(xxx)可能获取不到
function parseResult() {
if(xmlHttpRequest.readyState==4&&xmlHttpRequest.status==200){
var responseDiv=document.getElementById("responseDiv");
var xmlDoc=xmlHttpRequest.responseXML;
var content=xmlDoc.getElementsByTagName("Users");
var Info="<table><tr><td>用户</td><td>密码</td><td>性别</td><td>方法</td></tr>";
Info+="<tr><td>"+content[0].childNodes[0].firstChild.data+"</td>";
Info+="<td>"+content[0].childNodes[1].firstChild.data+"</td>";//文本也算一个节点
Info+="<td>"+content[0].childNodes[2].firstChild.data+"</td>";
Info+="<td>"+content[0].childNodes[3].firstChild.data+"</td></tr></table>";
responseDiv.innerHTML=Info;
}
}
</script>
<!--HTML代码部分-->
<div>
<form name="myFrom">
用户名:<input type="text" name="userName" value="" id="userName"/><br/>
(显示)密码:<input type="text" name="passWord" value="" id="passWord"/><br/>
<input type="button" value="使用Get" onclick="doRequestUsingGet()"/>
<input type="button" value="使用Post" onclick="doRequestUsingPost()"/>
</form>
</div>
<div id="responseDiv"></div>
(2)正题!DWR配置:
需要的Jar:commons-logging-1.0.4.jar、dwr.jar
web.xml的配置:
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="dwr" version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<servlet>
<servlet-name>dwr-invoker</servlet-name>
<servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>true</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>dwr-invoker</servlet-name>
<url-pattern>/dwr/*</url-pattern>
</servlet-mapping>
dwr.xml的配置:(与web.xml同目录)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 3.0//EN" "http://getahead.org/dwr/dwr30.dtd">
<dwr>
<allow>
<!--设置New创造器-->
<create creator="new" javascript="service1">
<param name="class" value="com.lrl.test.Server" />
</create>
<!--设置dwr匹配的数据Bean-->//区别于Spring的Bean
<convert match="com.xxx.entity.Person" converter="bean">
<param name="include" value="id,name,pet"></param>
</convert>
<convert match="com.xxx.entity.Pet" converter="bean">
<param name="include" value="id,name"></param>
</convert>
<!--如果需要给Spring管理,creator="spring" 且param里 name="beanName"
value="Spring的BeanId"-->//注意,value里的是Spring管理的bean的id!如果不给Spring管理的话,那么依赖注入会失败。所以根据情况而定!
<create creator="spring" javascript="userService">
<param name="beanName" value="userServiceImpl"></param>
<param name="location" value="classpath:beans.xml" />//spring的xml的位置
</create>
</allow>
</dwr>
dwr的HTML代码部分:
<script type="text/javascript" src='/AjaxDwrPro1/dwr/engine.js'></script>//引用内置的,否则会出错。
<script type="text/javascript" src='/AjaxDwrPro1/dwr/util.js'></script>//这个也引用内置的把!
<script type="text/javascript" src='/AjaxDwrPro1/dwr/interface/server1.js'>
</script>//这里的server1就是dwr里面javascript设定的值!路径别错!
<script type="text/javascript">
function dwrTest() {
var userName = document.getElementsByName("userName")[0].value;
var passWord = document.getElementsByName("passWord")[0].value;
server1.checkLogin(userName, passWord, callBack);//第三个参数是回调函数,一般把回调函数都放在最后一个参数的位置上把~~
}
function callBack(date) {//date是调用checkLogin函数后返回的数据。
if (date == true) {
alert("登陆成功!");
document.myForm.submit();
} else if (date == false) {
alert("登录失败");
return false;
}
}
</script>
基本用法就这样,更深层次的应用以后再慢慢补充把~~
总结:
(1)主要配置过程:web.xml+dwr.xml+jsp
(2)jsp里需包含使用到的js文件。详情看本文
(3)dwr与Struts整合需要struts2-dwr-plugin-2.2.1.1.jar包
分享到:
相关推荐
DWR的核心配置文件是`dwr.xml`,该文件定义了DWR允许访问的Java对象、转换规则以及方法签名等关键设置。 ### 1. `dwr.xml` 结构 `dwr.xml`的基本结构如下: ```xml <!DOCTYPE dwr PUBLIC "-//GetAhead Limited//...
dwr配置文件是Direct Web Remoting(DWR)的核心组件之一,它负责配置DWR的各种设置和参数。在本文中,我们将详细介绍dwr配置文件的结构和配置方法,并探讨它在实际应用中的作用。 dwr配置文件的结构 -------------...
DWR(Direct Web Remoting)是一种Java库,用于在Web应用程序中实现实时的双向通信。它允许JavaScript和服务器端的Java代码之间直接交互,从而创建动态...阅读`DWR中文文档.pdf`将进一步深入理解DWR的使用和配置细节。
- 帮助文档:可能包括官方文档,解释了DWR的用法、配置和API。 - 源码:DWR的源代码可以帮助开发者深入理解其工作原理,进行自定义扩展或调试。 - 关于控件的资料:可能是关于如何使用DWR与前端UI组件交互的示例或...
- **Spring配置DWR**:将DWR的配置移入Spring的配置文件(如applicationContext.xml),使用 `<dwr:config>` 标签来声明DWR的相关配置。 - **注册DWR Controller**:在Spring配置中,使用 `<bean>` 标签注册DWR的...
DWR.xml配置文件是DWR框架的核心,通过细致的配置,开发者可以精确控制哪些服务器端对象和方法对客户端可见,以及如何进行数据的序列化和反序列化。熟练掌握DWR.xml的配置规则,对于构建高效、安全的远程调用服务至...
下面我们将详细探讨DWR的配置和使用方法。 首先,配置DWR涉及以下几个关键步骤: 1. **引入DWR库**:在项目中添加dwr.jar,这是DWR的核心库,包含了所有必要的类和接口。 2. **创建Java类**:定义你需要在客户端...
2. **创建DWR配置文件**:通常命名为`dwr.xml`,这个文件定义了哪些Java类和方法可以被JavaScript访问。在文件中,你需要为每个可调用的类创建一个`<class-allow>`元素,并为每个可调用的方法创建一个`<method>`子...
本篇文章将深入讲解DWR的配置与使用。 首先,配置DWR是使用它的第一步。在DWR的配置过程中,主要涉及到两个关键文件:`dwr.xml`和`web.xml`。`dwr.xml`是DWR的核心配置文件,它定义了哪些Java类和方法可以被...
这个教程包含了一系列的文档和资源,帮助开发者深入理解和使用DWR。 首先,"DWR学习笔记"提供了对DWR基础概念、核心功能以及实际应用的概述。这些笔记可能包含了DWR的基本架构,如它如何通过AJAX技术实现实时的Web...
这个文件是DWR的配置中心,用于定义允许哪些Java对象和方法可以被客户端JavaScript访问,以及如何进行转换和安全设置。通过配置dwr.xml,开发者可以: 1. **映射Java类和方法**:你可以指定哪些服务器端的类和方法...
接下来,在DWR的配置文件dwr.xml中,我们可以定义允许客户端调用的Java类和方法。通过标签,可以配置哪些Java类和方法可以被客户端JavaScript访问。此外,还可以通过标签定义特定Java对象到JavaScript对象的转换规则...
在这个压缩包中,包含了DWR使用所需的关键组件和配置文件。 1. **DWR的JS文件**: - `dwr.engine.js`: 这是DWR的核心引擎,负责处理与服务器的通信,包括AJAX请求、反向Ajax和对象的序列化与反序列化。 - `util....
**DWR(Direct Web Remoting)使用方法详解** DWR,全称为Direct Web Remoting,是一种开源Java技术,用于在Web应用程序中实现浏览器与服务器之间的实时双向通信。它允许JavaScript直接调用Java方法,就像它们在...
### DWR使用方法详解:逐步指南 #### 一、引言 DWR(Direct Web Remoting)是一种简化Ajax开发的框架,它允许在浏览器端直接调用服务器端的方法,如同调用本地对象一样简单。本篇文章将从安装DWR、配置相关文件到...
`Dwr.doc` 文件很可能是DWR的配置和使用指南,其中会详细讲解如何在项目中集成DWR,包括: 1. **安装与配置**:如何下载DWR库,将其添加到你的项目类路径中,并在web.xml中配置DWR的Servlet。 2. **安全设置**:...
不过,你仍然可以使用`dwr.xml`文件来覆盖或补充Spring的配置,例如设置安全性、转换器等。 ### 性能优化 1. **缓存控制**:可以通过DWR的配置控制缓存策略,提高响应速度。 2. **批量调用**:DWR支持批量调用多个...
4. **配置DWR映射**:在`dwr.xml`配置文件(通常位于`WEB-INF`目录下)中,你需要指定哪些Java类和方法可以被远程调用。例如: ```xml <dwr> </dwr> ``` 这行配置告诉DWR,JavaScript可以使用`...
该压缩包中包含了dwr的使用及配置,和dwr的jar包; DWR采取了一个类似AJAX的新方法来动态生成基于JAVA类的JavaScript代码.这样WEB开发人员就可以在JavaScript里使用Java代码就像它们是浏览器的本地代码(客户端代码)...