DWR是一个Java开源库,帮助你实现Ajax网站。你可以在在Javascript代码中调用Web服务器上的Java程序,像在Java代码就在浏览器中一样。
DWR主要包括两部分:
1.在服务器上运行的Servlet来处理请求并把结果返回浏览器。
2.运行在浏览器上的Javascript,可以发送请求,并动态改变页面。
DWR会根据你的Java类动态的生成Javascript代码。你感觉整个Ajax调用都是在浏览器上发生的,但事实上是服务器执行了这些代码,DWR负责数据的传递和转换。这种Java和Javascript之间的远程调用会让DWR用户感觉像是曾经习惯使用的RMI或SOAP的RPC机制。而且这一过程还不需要额外的浏览器插件。Java是同步的,而Ajax是异步的。所以当你调用一个远程方法时,你要给DWR一个回调函数,当数据从网络上回来时,DWR会调用这个函数。(http://wiki.javascud.org/display/dwrcn/Overview+of+DWR)
1. 下载安装DWR的Jar包
下载dwr.jar文件。把它放到你的webapp的WEB-INF/lib目录下。
2. 编辑配置文件
把下面的代码加到WEB-INF/web.xml文件中。<servlet>那部分需要和其他的<servlet>在一起,<servlet-mapping>部分也一样。
<servlet> <servlet-name>dwr-invoker</servlet-name> <display-name>DWR Servlet</display-name> <servlet-class>uk.ltd.getahead.dwr.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文件。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN" "http://www.getahead.ltd.uk/dwr/dwr20.dtd">
<dwr>
<allow>
<create creator="new" javascript="myDate">
<param name="class" value="java.util.Date"/>
</create>
</allow>
</dwr>
上面配置的意思是用java中Date的new方法创建一个对象,在js中的名字是myDate;这样在页面引入这myDate之后就可以像这样使用:myDate.getDate()获取当期日期;
3. 访问dwr
在浏览器中输入http://localhost:8080/[YOUR-WEBAPP]/dwr/可以测试dwr是否配置成功。
按上面配置之后,页面显示应该是:
Classes known to DWR:
- myDate (java.util.Date)
点击“myDate”可以看到myDate的方法,也可以测试方法是否正确。在方法后面的括号中填入参数,点“execute”就会看到方法执行的结果。
到此dwr已经配置完成,可以在页面中使用了。
4.在web应用中使用
在页面中引入
<script src='/[YOUR-WEBAPP]/dwr/interface/[YOUR-SCRIPT].js'></script> <script src='/[YOUR-WEBAPP]/dwr/engine.js'></script>
就可以使用了。