DWR是一个开源的类库,可以帮助开发人员开发包含AJAX技术的网站.它可以允许在浏览器里的代码使用运行在WEB服务器上的JAVA函数,就像它就在浏览器里一样.它包含两个主要的部分:允许JavaScript从WEB服务器上一个遵循了AJAX原则的Servlet(小应用程序)中获取数据.另外一方面一个JavaScript库可以帮助网站开发人员轻松地利用获取的数据来动态改变网页的内容.
下面开始测试:
一.引入dwr.jar包
二.新建一个Test.java类:
package com.dwr; public class Test { public String hello(){ String welcome = "DWR, Hello World!!!"; System.out.println(welcome); return welcome; } }三.在WEB-INF下新建dwr.xml配置文件(最后到dwr工程文件中去Copy比较方便),修改内容如下:
<?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> <!-- intro - for the test on index.html --> <create creator="new" javascript="T"> <param name="class" value="com.dwr.Test"/> </create> </allow> </dwr>四.在web.xml中添加如下内容:
<servlet> <servlet-name>dwr-invoker</servlet-name> <display-name>DWR Servlet</display-name> <description>Direct Web Remoter Servlet</description> <servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class> <init-param> <param-name>debug</param-name> <param-value>true</param-value> </init-param> <!-- 下面的参数最好加上,在Tomcat6.0上测试不需要添加这个参数,7.0的时候不添加好像会报一个Session Error的错误 --> <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>五.新建jsp文件,index.jsp,在jsp中需要添加的如下内容:
<script type='text/javascript' src='dwr/interface/T.js'></script> <script type='text/javascript' src='dwr/engine.js'></script> <script type='text/javascript' src='dwr/util.js'></script> <script type="text/javascript"> function clickMe() { T.hello( function(datas){ alert(datas); } ); } </script>
六.访问:http://localhost:8080/DWR_0100_HelloWorld/ ,点击clickMe按钮,窗口弹出:DWR, Hello World!!!,后台也打印:DWR, Hello World!!!,测试成功
特别注意点:dwr.xml中javascript=“T”和jsp页面上引入的javascript文件<script type='text/javascript' src='dwr/interface/T.js'></script>,还有javascript函数中T.hello...这三个地方的T的名字必须统一,否则测试不成功……
另外,dwr还有一种配置方式,与spring继承配置:
<?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> <create creator="new" javascript="cnToSpell"> <param name="class" value="com.onnet.utils.CnToSpell"/> </create> <create creator="spring" javascript="payDwr"> <param name="beanName" value="payDwr" /> </create> </allow> </dwr>