最近学习了dwr的知识,感觉它确实是一个比较好的Ajax框架,使用起来比较简单。下面简单的总结一下使用dwr开发的步骤:
1.将dwr.jar包导入工程,/WEB-INF/lib目录下
2.在web.xml中加入如下配置,增加dwr的Servlet
<servlet> <servlet-name>dwr-invoker</servlet-name> <!-- DWRServlet 里的init()方法,初始化一个Continer,然后加载dwr.xml ,以及对下面配置的 相关参数的读取--> <servlet-class> org.directwebremoting.servlet.DwrServlet </servlet-class> <!-- 下面的属性设置为true时,可以通过http://localhost:port/app/dwr访问相应dwr - - 在log4j.properties下加,log4j.logger.uk.ltd.getahead.dwr = debug。这样可以看DWR的调 试日志 --> <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>
3.在/WEB-INF/(与web.xml同一目录)下建立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>标签中包括可以暴露给javascript访问的东西 --> <allow> <create javascript="SelectSys" creator="spring" scope="application"> <param name="beanName" value="selectSys"></param> </create> </allow> </dwr>
注意:<create>的<param>中name属性指定为"beanName",所以必须在Spring配置文件中配置"selectSys"的bean。
4.在服务器端编写dwr.xml中配置的Java类,这里编写的是SelectSys类,对应上述<create>下的<param>中指定的bean。
public class SelectSys { public String sayHello() { return "Hello,world!"; } }
其中仅包含一个方法sayHello(),该方法既是客户端脚本中要调用的服务器端的Java方法。
5.在页面中编写JavaScript脚本调用java方法
<script type='text/javascript' src='../dwr/interface/SelectSys.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 callSelectSys() { SelectSys.getHostIps(callBack); } function callBack(data) { alert(data); } </script> <input type="button" value="sayHello" onclick="callSelectSys()">
至此,一个最简单的DWR应用就完成了,当点击页面的"sayHello"按钮时,将弹出"Hello,world!",可见,确实执行了服务器端的sayHello()方法。
这仅仅是一个如何使用dwr的最简单的例子,至于脚本中如何传递参数到服务端,以及如何接收其他类型的返回值(如List,数组,bean等),看看相关的dwr深入学习的资料,一看就会了,只要掌握了开发流程,不愁不会用,呵呵!