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> 标签中包括可以暴露给javascript访问的东西。 标签中指定javascript中可以访问的java类,并定义DWR应当如何获得要进行远程的类的实例。creator="new"属性指定java类实例的生成...
一个例子 有关dwr的配置 和使用 在jsp页面的配置,调用。 web.xml中的配置 和链接服务层的方法
该压缩包中包含了dwr的使用及配置,和dwr的jar包; DWR采取了一个类似AJAX的新方法来动态生成基于JAVA类的JavaScript代码.这样WEB开发人员就可以在JavaScript里使用Java代码就像它们是浏览器的本地代码(客户端代码)...
配置和使用DWR进行Ajax开发
dwr的具体的用法配置和解析,dwr封装了ajax代码写在后台java代码中可以经过配置来调用。
将象用exclude和incluce来通知DWR隔离creator的方法一样,converter也有一个类似的配置方法.因为指定属性转换只有针对bean才有效(基本类型的转换没有必要指定属性),这个功能只能应用与特定的converter即BeanConverter...
适用于java开发者使用。介绍dwr的用法和配置。
DWR(Direct Web Remoting)是一个WEB远程调用框架.利用这个框架可以让AJAX开发变得很简单.利用DWR可以在客户端利用JavaScript直接调用服务端的Java方法并...本次例子只是用于演示,说明DWR的使用,类设计并不是最优的
dwr 配置详细介绍与说明,对于java web开发很有用,可以不使用struts 直接调用service方法
DWR框架使用方法:介绍Dwr具体配置、 文档含验证是否同名······
DWR是一个Java库,能够使浏览器中的JavaScript和服务器上的Java进行互动,并尽可能简单地调用Java的方法。本文档讲一下关于这个框架的入门配置及应用,服务器采用tomcat
DWR工作原理是通过动态把Java类生成为Javascript。它的代码就像Ajax魔法一样,你感觉调用就像发生在浏览器端,但是...所以你调用远程方法时,当数据已经从网络上返回的时候,你要提供有反调 (callback) 功能的DWR。
在Struts2与Spring2.5结合DWR2配置使用方法.doc
所以如果你有一个叫A的bean,它有一个方法叫A.blah(B) 那么你需要一个A的creator和一个B的converter。 一: allow段落里面定义的试DWR可以创建和转换的类。 二:Creators dwr.xml文件中的create元素的结构如下: ...
自己总结的一个的dwr的使用说明,附有源码,以及代码的详细解释,配置文件的详细解释。完全可以运行。同时介绍了与其类似用法的dotnet版本的ajax组建。需要自己下载dwr.jar 3.0版本。或者到我的空间下载dwr.jar 3.0...
DWR[1].xml配置文件说明书 详细介绍了dwr框架的配置和使用方法
32 4.1 DWR与Servlet 32 4.1.1 使用webContext的方法: 32 4.1.2 方法选择 32 4.2 DWR与Spring 34 4.2.1 让DWR和Spring一起工作的检查列表 34 4.2.2 Spring Creator 34 4.2.3 找到...
一个利用DWR的简单应用实例,可以实现增删改查,全部数据存内存列表中,暂不用任何数据库支持,直接部署应用即可使用,方便易用...主要用于DWR初学者体验下DWR在页面的使用和配置方法.
出于安全的理由,WEB开发者必须适当地配置哪些Java类可以安全的被外部使用. 这个从JAVA到JavaScript的远程功能方法给DWR的用户带来非常像传统的RPC机制,就像RMI或者SOAP一样,而且拥有运行在WEB上但是不需要浏览器插件...
在网上找了很多资料,终于找到了一个方法使用Spring的配置文件去集成DWR2,并创建DWR2对象,这不是传统的集成方式,无需要dwr.xml文件,希望对你们有所帮助