DWR(Direct Web Remoting)是一个用于改善web页面与Java类交互的远程服务器端Ajax开源框架,可以帮助开发人员开发包含AJAX技术的网站.它可以允许在浏览器 里的代码使用运行在WEB服务器 上的JAVA函数,就像它就在浏览器里一样。
1. 安装 DWR JAR 包
下载 dwr.jar 文件,然后将它放在 web 程序的 WEB-INF/lib 目录下面,很可能在这个目录下已经有一些 jar 文件了。
2. 编辑 config 文件
将下面的代码添加到 WEB-INF/web.xml 文件中,<servlet>需要放在另外的<servlet>之后,<servlet-mapping>也是如此。
<!-- 添加DWR支持 --> <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>
3、接下来创建 dwr.xml 文件并将此放在 web.xml 所在的 WEB-INF 目录下。文件中类似下面的内容:
<!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="com.test.entity.UserInfo" /> </create> </allow> </dwr>
DWR 配置文件定义了由 DWR 创建和被 Javascript 远程使用的类。在上面的例子中我们在远程创建了2个类,并且给出了在 Javascript 中的类名。
上面使用的 new creator 使用了所有的 JavaBeans 必须含有的公有(public)无参(no-args)的构造函数。值得一提的是, DWR 还有一些限制:
避免使用 JavaScript 保留字;以保留字命名的方法将自动被排除。大多数 JavaScript 的保留字同时也是 Java 的保留字,因此无论如何你也不能使用一个名为 “try()” 的方法。但是最常用的一个词 “delete()”,在 JavaScript 中有特殊的含义而在 Java 中没有。
重载方法(Overloaded methods)将会在调用的时候陷入未知的状况,因此应该避免重载方法。
附上com.test.entity.UserInfo.java代码
package com.test.entity; public class UserInfo { public String username; public String password; public String getUsername() { return username; } public void setUsername(String username) { System.out.println("dfsghjkhgfdfgh"); this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } }
3. 访问下面的地址
http://localhost:8080/[YOUR-WEBAPP]/dwr/
进入 http://localhost:8080/[YOUR-WEBAPP]/dwr/ 然后点击你创建的类;(点击Demo)
应用调用(自己查看是否跳到对应方法中)
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>My JSP 'index.jsp' starting page</title> <!--调用的js就是刚才粘贴过来的--> <script type='text/javascript' src='/Struts2Test/dwr/interface/Demo.js'></script> <script type='text/javascript' src='/Struts2Test/dwr/engine.js'></script> </head> <script type="text/javascript"> function doSet(){ Demo.setUsername("adsfs");//调用可以使用的方法 } </script> <body> <input type="button" id="cli" name="cli" value="click" onClick="doSet()" /> </body> </html>