DWR(Direct Web Remoting)是一个Java Ajax的框架,允许开发人员在客户端通过JavaScript代码调用服务器端的java方法,这些方法就像是在客户端一样
DWR框架主要由两部分组成,客户端JavaScript嗲吗直接调用服务器Java方法,服务器上运行的DWR核心Servlet负责处理客户端请求,将客户端的请求委托到实际的Java 对象进行处理,并将结果返回给客户端
首先下载DWR包 http://directwebremoting.org/dwr/download.html 下载DWR 最新版本
(1)建立项目 复制DWR包 到WEB/INF/lib下——DWR运行时依赖commons-logging库的支持没有则添加
(2)编写配置Web.xml文件保证特定请求转发给DWR 核心Servlet
<servlet> <servlet-name>my_dwr</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>my_dwr</servlet-name> <url-pattern>/dwr/*</url-pattern> </servlet-mapping>
DwrServlet是DWR框架的核心,也可以使用uk.ltd.getahead.DwrServlet,该类继承自DwrServlet类,
将debug设置为true,指定处于调试状态,DWR会提供一个调试页面,在开发中建议为true,发布后设置为false
(3)在WEB-INF目录下建立文件dwr.xml(该文件即为dwr的配置文件),在该文件里,需要配置javaScript要用的java类,主要配置两个属性:javascript:该属性相当于定义了javascript里调用的类变量,dwr会自动生成该文件名的js文件,param里配置的name="class",value应该配置实现类路径,如下内容配置了js里直接调用java的Date类和一个测试类的配置模式
<!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="JDate"> <param name="class" value="java.util.Date"/> </create> <create creator="new" javascript="Demo"> <param name="class" value="your.java.Bean"/> <convert converter="bean" match="com.ljm.dwr.Animal"/> </allow> </dwr>
allow:定义能够创建和转换的类,是dwrxml中最主要的元素
create:创建器,定义如何将一个java类转换成javaScript对象 它包含的树形和子元素如下:
creator属性:DWR内置多个创建器用于处理多种类型的java类
javascript属性:在客户端穿件的JavaScript对象命名,该名字在页面里作为.js被导入
scope属性:作用域,选项可以是application。session,request和page,可选,默认page
<param>元素:指定参数名称,value执行参数值
<include>元素:定义允许访问的方法列表
<exclude>元素:不允许访问的列表
<convert>元素:类型转换器,定义Java类和JavaScript类型之间的对应关系
<Bean>转换器:用于完成JavaBen对象和Java和JavaScript对象之间的关系,默认关闭
<convert vonverter="bean" match=www.dwrdemo.DwrBean></convert>
(4)定义Bean类,具有getter和setter方法
(5)重新启动tomcat服务器,测试安装效果,http://localhost:8080/应用名/dwr,如果成功显示页面,说明安装正确
(6)页面导入DWR为Java对象动态生成的JavaScript文件
<script type='text/javascript' src='<%=basePath%>/dwr/interface/JDate.js'></script>
<script type='text/javascript' src=<%=basePath%>/dwr/engine.js'></script>
该文件位置为:DWR框架核心Servlet的URL/interface/JavaScript对象名.js
其中DWR框架核心Servlet的URL在Web.xml中配置
engine.js是DWR的核心JavaScript文件,必不可少/util.js是Dwr的工具JavaScript文件
(7)调用方法
<script type="text/javascript"> MyDwr.load(loadUser); function loadUser(user){ alert(user.id+" : "+user.username+" : "+user.group.name); } </script>
DWR百科:http://baike.so.com/doc/6827593-7044788.html