Dwr是什么?
·Dwr 是 Direct Web Remoting 的缩写。
·Dwr(Direct Web Remoting) 是一个 Web 远程调用框架,可以让 Ajax 变得很方便。
·Dwr 是可以从客户端的 jsp 页面上直接调用 java 代码 ( 而不通过任何处理 ) 。
用前配置:
· 导入dwr 的核心包: dwr.jar 可以从其官网上下载
(http://directwebremoting.org/dwr/download.html ),将该 jar 包放到 java web 项目中 WEB-INF 目录下的 lib 目录中。
·在WEB-INF 目录下的 web.xml 配置文件在要加入 dwr 的 servlet:
< 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 > < load-on-startup > 1 </ load-on-startup > </ servlet >
< servlet-mapping > < servlet-name > dwr-invoker </ servlet-name > < url-pattern > /dwr/* </ url-pattern > </ servlet-mapping > |
· 加入dwr 的 xml 配置文件: dwr.xml ,放在 web 项目的 WEB-INF 目录下,下面是 dwr.xml 配置文件中的信息
<? xml version = "1.0" encoding = "UTF-8" ?> <! DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN" "http://getahead.org/dwr/dwr20.dtd" > < dwr > < allow > <!-- new一个Test的对象出来,在javascript中名为:MyDwr --> < create creator = "new" javascript = "myDwr" > <!-- 创建对象的方式,该对象是一个class,所在位置在org.zsl.dwr这个包中 --> < param name = "class" value = "org.zsl.dwr.Test" /> </ create > </ allow > </ dwr > |
· Test是这样一个很简单的类:
package org.zsl.dwr; public class Test { public void getStr(String str) { System. out .println(str); } } |
·前面都是一些必要的配置,接下来就是如何在jsp 页面上使用 dwr 了
如果定义path= <%= request.getContextPath() %>
<!-- 以下这两个js是必须导入的的,但是在项目中是找不到这两js文件的,这两个文件存在于dwr.jar文件中 --> < script type = 'text/javascript' src = ' path /dwr/engine.js ' > </ script > < script type = 'text/javascript' src = ' path /dwr/util.js ' > </ script > <!-- 这个就是在dwr.xml中所配置的js文件了,在里面配有:javascript="myDwr"所以在这里就是myDwr.js --> < script type = 'text/javascript' src = ' path /dwr/interface/myDwr.js ' ></ script > <!-- jquery的核心包,在此导入的目的是为了方便取节点,引不引入这个包对dwr是没有任何影响的 --> < script type = "text/javascript" src = " path /js/jquery-1.3.2.min.js " ></ script > < script type = "text/javascript" > function fun() { var str = $( "#test" ); //执行这里的时候就会在服务器端输出下面文本框中的值 myDwr.getStr(str.val()); } </ script > <!-- 当该文本框失去焦点时执行fun这个函数 --> < input type = "text" id = "test" onblur = "fun()" /> |
目前很多网站或系统中都已经把dwr 推得很广泛了