`

dwr学习(一):简单dwr实例

    博客分类:
  • dwr
 
阅读更多

最近写ajax写烦了,想着能不能有个更简单的“ajax”,一问就问到这个dwr了。赶紧去官网学习了下,这里写个博客记录一下实例。

 

测试环境:tomcat6.0

 

1、新建一个web项目(这里比较简单,我就不赘述了),我这里的是TestWeb。

 

2、安装dwr。

主要用到两个jar包。

一个是dwr.jar:这个是dwr的主要文件,可以去官网下载。

下载链接:http://directwebremoting.org/dwr/downloads/index.html

另一个是commons-logging.jar,这个jar包比较常用,那个版本的都没问题。我这里用的是commons-logging-1.0.4.jar。

将commons-logging-1.0.4.jar和dwr.jar拷贝到TestWeb项目的/WEB-INF/lib目录下

至此安装完毕。

 

3、将dwr用到的servlet配置到web.xml中。

<servlet>
  <display-name>DWR Servlet</display-name>
  <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>

也可以从http://directwebremoting.org/dwr/introduction/getting-started.html中拷贝。

 

4、添加dwr.xml。

在/WEB-INF新建dwr.xml,名称必须为dwr.xml不能随便取。内容为:

<!DOCTYPE dwr PUBLIC
    "-//GetAhead Limited//DTD Direct Web Remoting 3.0//EN"
    "http://getahead.org/dwr/dwr30.dtd">
<dwr>
  <allow>
    <!-- 调用系统类 -->
	<create creator="new" javascript="JDate">
	  <param name="class" value="java.util.Date"/>
	</create>
    <!-- 调用自定义的类:带一个参数 -->
    <create creator="new" javascript="Base64">
    	<param name="class" value="com.wjl.test.Base64"></param>
    </create>
  </allow>
</dwr>

 具体什么意思可以先不了解,也可以去官网上看或者下载附件进行了解。 官网链接: http://directwebremoting.org/dwr/introduction/getting-started.html。

我这里除了定义了一个系统自带的java.util.Date,还有一个自定义的com.wjl.test.Base64,其代码如下:

public class Base64 {
	// 加密
	public static String encode(String str) {
		byte[] b = null;
		String s = null;
		try {
			b = str.getBytes("utf-8");
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		}
		if (b != null) {
			s = new BASE64Encoder().encode(b);
			//据RFC 822规定,每76个字符,还需要加上一个回车换行去掉换行符
			s = s.replaceAll("[\\s*\t\n\r]", "");  
		}
		return s;
	}

	// 解密
	public static String decode(String s) {
		byte[] b = null;
		String result = null;
		if (s != null) {
			BASE64Decoder decoder = new BASE64Decoder();
			try {
				b = decoder.decodeBuffer(s);
				result = new String(b, "utf-8");
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
		return result;
	}
}

5、新建jsp页面进行调用。

a、在webRoot根目录下新建testDwrDemo.jsp,html代码为:

<input type="button" value="获取当前月份" onclick="getMonth();" /><br />
当前月份:<span id="curMonth"></span>
<br />
<br />
加密数据:<input type="text" id="encodeStr" size="45"/><br />
加密后:<input type="text" id="encodeResult" size="45"/><br />
<input type="button" value="加密" onclick="encode();" />

以上代码定义了两个两个方法,分别用来测试第4步中的两个类。

 

b、在jsp页面引入JS文件

<script type="text/javascript" src="dwr/engine.js"></script>
<script type="text/javascript" src="dwr/util.js"></script>
<script type="text/javascript" src="dwr/interface/JDate.js"></script>
<script type="text/javascript" src="dwr/interface/Base64.js"></script>

这里有几个注意点:
第一点:所有的js文件必须以dwr开头,即便项目中并不存在dwr文件夹,也不存在以上的四个js。

第二点:engine.js必须要引用。utils.js可以不引用,只有当需要用到其中的方法时才引用。

第三点:后面两个js文件是自己添加的,这种自己添加的js必须带interface目录,也就是自定义js必须以dwr/interface目录开头。(系统的以dwr就OK了)

第四点:自定义JS文件的命名:dwr.xml中javascript属性定义的名称+.+js。我的dwr.xml中javascript属性一个为JDate一个Base64,所以两个js的名称为JDate.js和Base64.js。

 

c、使用js调用java类中的方法。

function getMonth(){
	/*
	//JDate:与自定义的js文件名称相同,也与dwr.xml文件中定义的javascript属性值相同
	JDate.getMonth(function(data){
		alert("当前月份:"+(data+1));
		document.getElementById("curMonth").innerHTML=(data+1);
	});
	*/
	//也可以写成:
	JDate.getMonth(callback);
	
}
function callback(data){
	alert("当前月份:"+(data+1));
	document.getElementById("curMonth").innerHTML=data;
}

//该方法用来加密
function encode(){
	var str = document.getElementById("encodeStr").value;
	var str2 = Base64.encode(str,function callback(returnData) {
           alert(returnData);
           document.getElementById("encodeResult").value=returnData;
       });
}

6、使用tomcat进行调试。

a、java类中的方法调试:

发布项目启动tomcat,在浏览器中输入:http://127.0.0.1:8080/TestWeb/dwr,然后回车。

浏览器中显示所有配置在dwr.xml中的类。点击某个类名,可以查看这个类中的方法。如我这里点击Base64,结果如图:

Base64.java中定义了这两个类,且都是公开的,所以在这里显示 了(至于怎么让它不显示,可以看最下边的PS)。

我在encode的括号中输入abc,点击右侧的"Execute"按钮,会自动给我显示加密后的结果,如图:
 这个调试是不是很有用?

当然想关闭这种调试也很简单,将web.xml中关于dwr的配置中的debug参数值改成false即可,这样子访问http://127.0.0.1:8080/TestWeb/dwr/将会出现404错误,自然也就不能调试了。是不是很方便。

 

b、JS方法调试。

这个很简单,点击页面按钮看看结果对不对就知道啦。

 

PS:关于让指定的方法不显示,可以通过<create>标签下的<include>和<exclude>

<include method=""/>:指定要公开给javascript的方法。
如:<include method="encode"/>,那么在JS中就可以调用该方法encode。
不指定的话就公开所有方法。

<exclude method=""/>:指定要防止被访问的方法。
如:< exclude method="decode"/>,那么在JS中就不可以调用该方法decode。
include和exclude不能同时存在。

 

至于上面的例子各个标签的含义,附件中的帮助文档说的很清楚啦,这里就不赘述了。

  • 大小: 40.9 KB
  • 大小: 4.6 KB
分享到:
评论

相关推荐

    DWR的学习资料,DWR学习必备

    DWR使用笔记.chm:这可能是一份详细的DWR使用手册,包含了如何集成DWR到项目中、配置DWR引擎、创建远程接口以及处理各种交互的实例。通过阅读这份笔记,你可以了解到DWR的基本概念、配置步骤以及实际应用技巧。 dwr...

    Ajax框架:简单的dwr实例

    通过实践一个简单的DWR实例,你可以更好地理解如何在实际项目中使用它来构建高效、响应式的Web应用。随着对DWR的深入理解和应用,你会发现它不仅可以提升开发效率,还能显著提升应用的用户体验。

    DWR学习资料

    DWR学习资料 :DWR 3.0 上传文件.txt DWR3.0反向Ajax示例.txt DWR3.0...多人聊天室.doc 反向Ajax技术实例.txt 基于DWR反向AJAX的Web监控系统.doc 深入学习DWR3.0.txt 实战dwr.doc 使用Jetty和DWR创建伸缩性Comet程序.txt

    dwr学习实例+dwr完整包(简单登陆,完整版,下载可直接跑)

    在本实例中,我们看到的是一个基于DWR的简单登录系统,它包含了一个完整的包,下载后可以直接运行,这对于初学者来说是极好的学习资源。 这个实例主要展示了以下几个知识点: 1. **DWR的基本概念**:DWR的核心是它...

    一个简单DWR学习二级菜单实例

    一个简单DWR学习二级菜单实例一个简单DWR学习二级菜单实例一个简单DWR学习二级菜单实例一个简单DWR学习二级菜单实例一个简单DWR学习二级菜单实例一个简单DWR学习二级菜单实例一个简单DWR学习二级菜单实例

    dwr经典实例(9个常用实例)

    这个压缩包文件"dwrtest"很可能包含了9个经典的DWR实例,这些实例通常会展示DWR的主要功能和用法。以下是关于DWR的一些关键知识点的详细介绍: 1. **远程方法调用(RMI-like)**: DWR的核心特性是能够像本地方法一样...

    dwr 实例 Dwr实例

    自己写的dwr实例。方便大家学习,包括jar文件,希望对大家有帮助

    学习dwr的一个例子

    这个"学习dwr的一个例子"是一个实践教程,可能包含了如何设置DWR环境、创建远程Java对象、调用这些对象的方法以及处理返回的数据等步骤。 1. **DWR简介**:DWR的核心功能是通过AJAX技术实现浏览器与服务器之间的...

    dwr+spring实例

    综上所述,"DWRSpring实例"是一个很好的学习资源,可以帮助我们理解DWR如何与Spring框架集成,以及如何在实际项目中实现动态的、基于Ajax的Web应用。通过研究和实践这个例子,开发者可以提升自己在构建富互联网应用...

    dwr学习实例 初学者的宝

    3. **实例教程**:可能包含一系列逐步指导的实例,例如使用DWR实现简单的CRUD操作(创建、读取、更新和删除),或者展示如何利用DWR进行异步数据加载。 4. **高级特性**:可能涵盖了DWR的高级功能,如批量调用、...

    dwr实例,从后台取数据显示

    在你提供的实例中,“dwr实例,从后台取数据显示”表明这是一个使用DWR从服务器获取数据并在前端展示的简单应用。 1. **DWR的工作原理**:DWR通过在服务器上设置一个代理,允许JavaScript调用Java方法,就像它们是...

    dwr实例 - dwr入门 本人开发的:小游戏 大家一起来赚钱

    DWR通过AJAX技术提供了一种简单的方法来实现实时的、双向的通信,使得前端用户界面能够与后端服务器进行近乎实时的数据交换,而无需刷新整个页面。 在这个实例"大家一起来赚钱"中,我们可以看到DWR被用来创建一个...

    dwr实例教程 很好的入门实例

    ### dwr实例教程知识点解析 #### 一、DWR简介及功能特点 DWR(Direct Web Remoting)是一种简化Ajax应用开发的技术框架。它能够使客户端的JavaScript代码直接调用服务器端的Java方法,实现数据的实时交互。与传统...

    springMVC+dwr技术实现消息推送实例

    SpringMVC作为Spring框架的一部分,主要用于构建后端服务,而DWR则是一种JavaScript库,允许JavaScript与Java服务器进行实时通信,实现了类似Ajax的功能但更高效。本实例将展示如何结合两者来实现实时的消息推送。 ...

    dwr实例dwr实例dwr实例

    dwr实例dwr实例dwr实例dwr实例dwr实例dwr实例dwr实例dwr实例dwr实例dwr实例dwr实例dwr实例dwr实例dwr实例dwr实例dwr实例dwr实例dwr实例dwr实例dwr实例dwr实例dwr实例dwr实例dwr实例dwr实例dwr实例dwr实例dwr实例dwr...

    引:dwr实例

    **DWR(Direct Web Remoting)**是一种Java技术,它允许Web应用程序在浏览器和服务器之间进行实时通信,而无需使用插件或JavaScript框架。DWR的核心功能是将Java对象暴露给JavaScript,使得前端可以直接调用后端的...

    dwr简单 实例 入门

    在这个“dwr简单实例入门”中,我们将深入探讨DWR的基本概念、配置和一个简单的应用示例。 首先,了解DWR的核心概念: 1. **Remoting**:远程方法调用,DWR允许JavaScript代码通过HTTP请求调用服务器上的Java方法...

    dwr实例操作+rmi实例操作

    3. **DWR实例操作** - **创建JavaBean**:例如创建一个名为`User`的Java类,包含姓名和年龄属性及对应的getter、setter方法。 - **配置dwr.xml**:声明`User`类及其方法为可远程访问。 - **生成JavaScript接口**...

    DWR 开发实例是用来学习DWR的一个实例

    这个"DWR开发实例"是一个专门为学习DWR技术准备的实践项目,旨在帮助开发者理解DWR的核心功能和使用方法。 在DWR中,主要涉及以下几个关键概念: 1. **Reverse Ajax**:DWR的核心特性之一是实现了Reverse Ajax,即...

Global site tag (gtag.js) - Google Analytics