Dwr 是什么?
DWR(Direct Web Remoting)是一个用于改善web页面与Java类交互的远程服务器端Ajax开源框架,可以帮助开发人员开发包含AJAX技术的网站.它可以允许在浏览器里的代码使用运行在WEB服务器上的JAVA函数,就像它就在浏览器里一样。
Dwr跟Jquery那样的纯JavaScript不太一样...他后台的部分是Java实现的
今天就来实现一下Dwr的HelloWorld程序...很简单的
引入Dwr的Jar包 可以去官方网站上去下载
创建一个普通的类,添加一个普通的方法,注意必须是public的
package dwr.test.helloworld; public class UserService { public String hellodwr(){ System.out.println("UserService.hellodwr() is now invoked......."); return "方法被调用了,我是返回值!"; } }
修改web.xml 配置dwr拦截请求
<servlet> <servlet-name>dwr-invoker</servlet-name> <servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class> <init-param> <param-name>debug</param-name> <param-value>true</param-value> </init-param> <init-param> <param-name>crossDomainSessionSecurity</param-name> <param-value>false</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>dwr-invoker</servlet-name> <url-pattern>/dwr/*</url-pattern> </servlet-mapping>
创建类的映射文件,在web-info下建立dwr.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="us"> <param name="class" value="dwr.test.helloworld.UserService" /> </create> </allow> </dwr>
好了,现在部署你的web项目,打开你的项目的地址加上/dwr 就可以跳转到一个dwr默认为你创建好的页面了
这个页面上会列出你配置好的类,点击进去可以调用类中的各个方法 并可以获取到返回值
下面我们自己来写一个静态页面,完成方法的调用
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>Dwr HelloWorld</title> <script type='text/javascript' src='/test/dwr/interface/us.js'></script> <script type='text/javascript' src='/test/dwr/engine.js'></script> <script type='text/javascript' src='/test/dwr/util.js'></script> <script type="text/javascript"> var dwr_callback = function(data){ alert(data); } </script> </head> <body> <input type="button" value="invoke" onclick="us.hellodwr(dwr_callback)" /> </body> </html>
前面几个js是由dwr动态生成的,方法的调用可以像调用在java中一样 方法的返回值会传递给回调函数,回调函数要自己来写的
恩,就是这样,这是一个简单的dwr的helloworld程序,提供给新手参考
还有更复杂的,比如数组类型的参数或者返回值的方法的映射 甚至自定义类型的返回值的方法的映射,可以在网上查找相关资料