DWR(Direct Web Remoting)是一个用于改善web页面与Java类交互的远程服务器端Ajax开源框架,可以帮助开发人员开发包含AJAX技术的网站.它可以允许在浏览器里的代码使用运行在WEB服务器上的JAVA函数,就像它就在浏览器里一样。 DWR2.0以后新增加了JDK5的注解(Annotation)功能,使用注解功能之后可以从很大程度上简化了原来的dwr.xml的配置,使用起来非常的方便。
下面在Myeclipse上新建一个web项目来简单演示一下dwr.
需要准备的jar包:dwr.jar 和commons-logging.jar包.若新建的web项目中没有包括serverlet-api.jar,还需要手动引入此包.
步骤:
1.新建一个叫TestDwr的web项目,并在web-inf/lib下引入dwr.jar 和commons-logging.jar包 以及serverlet-api.jar
2.在src下新建一个model包,并在该包下建立一个Test类.如下所示:
package model;
import org.directwebremoting.annotations.RemoteMethod;
import org.directwebremoting.annotations.RemoteProxy;
@RemoteProxy( name="test")
public class Test {
@RemoteMethod
public String getString(String para)
{
return "return "+para;
}
}
3.配置 web.xml,如下
<?xml version="1.0" encoding="UTF-8"?>
<web-app 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>
<init-param>
<param-name>classes</param-name>
<param-value>
model.Test
</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>dwr-invoker</servlet-name>
<url-pattern>/dwr/*</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
接下面,通过Myeclipse编译发布项目,然后在浏览器中输入:http://localhost:9900/TestDwr/dwr来测试dwr配置是否成功,如下图所示:
点开 test 的链接,如下图所示:
将上图中红色部分引入index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<script type='text/javascript' src='/TestDwr/dwr/engine.js'></script>
<script type='text/javascript' src='/TestDwr/dwr/interface/test.js'></script>
<script type="text/javascript">
test.getString(
'test',//getString的参数
function(data){
document.write(data);
}//当getString从服务器取回数据后的回调函数,data为返回的值
);
</script>
</head>
<body>
</body>
</html>
在浏览器访问:http://localhost:9900/TestDwr/
界面上显示:
"return test"
如此,本例就算成功了