DWR入门实例

DWR是一个RPC的库,程序员可以通过它轻松的在javascript中调用java函数,也可以从java调用javaScript函数。本文基于DWR的官方帮助文档介绍一个基本的DWR实例。

首先下载dwr.jar包: http://java.net/projects/dwr/downloads/download/DWR_3.x/3.0_RC2/dwr.jar,将其放在web project的 WEB-INF/lib目录下。

由于DWR依赖Commons Logging,因此还需要下载commons-logging.jar包,同样要放在WEB-INF/lib目录下。下载地址为: http://commons.apache.org/logging/download_logging.cgi

在WEB-INF/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>
接着在WEB-INF目录下创建dwr.xml文件(与web.xml文件在同一目录下),如下所示:
<?xml version="1.0" encoding="UTF-8"?>   
<!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN" "http://www.getahead.ltd.uk/dwr/dwr10.dtd">
<dwr>
	<allow>
		<create creator="new" javascript="JUser">
			<param name="class" value="com.aneiki.dwr.User" />
		</create>
	</allow>
</dwr>   

在dwr.xml配置文件中定义了可以通过javascript构造并远程使用的类,javascript中的类JUser对应于java中的类com.aneiki.dwr.User,creator属性为“new”表示使用java beans的默认构造函数。


下一步需要建立相应java类com.aneiki.dwr.User:
package com.aneiki.dwr;

public class User {

	public String sayHello() {
		return "hello, dwr!";
	}

}
部署项目,启动tomcat,进入链接http://localhost:8080/[YOUR-WEBAPP-CONTEXT]/dwr/,此时可以在页面中看到你在dwr.xml文件中配置的类。你可以点击进入,里面列出了这些类可以被调用的方法。
如果能够显示这些页面,说明dwr的配置文件是正确的,但是如果这些页面正确显示,而自定义页面无法正常工作,那么就需要检查一下自己的javascript是否正确了。需要注意的是必须当DwrServlet类的debug属性为true时才会显示着些页面。

最后建立自己的html文件:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
		
		<script type='text/javascript' src='/dwrDemo/dwr/engine.js'></script>
		<script type='text/javascript' src='/dwrDemo/dwr/util.js'></script>
		<script type='text/javascript' src='/dwrDemo/dwr/interface/JUser.js'></script>
		
		<script language="javascript">  
			function callback(str) {
				dwr.util.setValue("name", str);
			}
			 
		    function hello() {
		    	JUser.sayHello(callback);
		    }
		    function clearName(){  
		        dwr.util.setValue("name", ""); 
		    }  
		</script>
	</head>
	<body>
		<input type="button" value="hello" οnclick="javascript:hello()">
		<input type="button" value="clear" οnclick="javascript:clearName()">
		<br><br>
		<input type="text" id="name">
	</body>
</html>
其中JUser.sayHello(callback)函数的参数是一个回调函数,JUser.sayHello()函数接受com.aneiki.dwr.User类的sayHello()方法的返回值,然后将其作为回调函数的第一个实参。

注意如下三个引用:

<script type='text/javascript' src='/dwrDemo/dwr/engine.js'></script>
<script type='text/javascript' src='/dwrDemo/dwr/util.js'></script>
<script type='text/javascript' src='/dwrDemo/dwr/interface/JUser.js'></script>
其中dwrDemo是我的web project的名字,请记得将其换成自己的web project的工程名。/dwrDemo/dwr/interface/JUser.js是dwr根据配置文件自动生成的javascript类,注意需要把这个引用放在前面两个引用之后。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值