这次因为项目的原因,又要开始研究DWR了。
?
什么是DWR?
??? DWR是一个Open Source的
java项目。DWR可以让JavaScript调用运行在Web服务器里面的JAVA程序。简单一点或者专业一点就是Easy AJAX for JAVA.
?
官方网站:http://directwebremoting.org/
?
?
?
刚刚在网上找了一个例子,因为下的是最新DWR版本,怎么和网上的例子有点不同,稍微改了一下就可以用了。
?
1. 增加web.xml的设置
?
<servlet> <servlet-name>dwr-invoker</servlet-name> <servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>dwr-invoker</servlet-name> <url-pattern>/dwr/*</url-pattern> </servlet-mapping>
?这里其实只是增加了一个Servlet而已,这个Servlet拦截了所有/dwr/*的请求。
?
2. 增加dwr.xml文件
?
我们在WEB-INF文件夹里面增加一下dwr.xml用来设置js里面调用的类文件,文件的代码如下:
?
<?xml version="1.0" encoding="UTF-8"?> <!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="MyTest" scope="application"> <param name="class" value="com.tntxia.dwr.DWRTest"/> </create> </allow> </dwr>
?
?3. 写真正业务逻辑的代码
?
接下来,我们可以定义Java类来实现业务逻辑了。
?
package com.tntxia.dwr; public class DWRTest { public DWRTest(){ } public String getMyName(){ return "Hello Ajax"; } }
?4. 最后,我们写一个JSP来展现结果
?
<%@ page language="java" contentType="text/html; charset=GB18030" pageEncoding="GB18030"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=GB18030"> <title>DWR - Test Home</title> <script type='text/javascript' src='dwr/interface/MyTest.js'></script> <script type='text/javascript' src='dwr/engine.js'></script> <script type='text/javascript' src='dwr/util.js'></script> <script language="javascript"> var mycall=function callBack(data){ dwr.util.setValue("demo1",data); } function showMyName(){ MyTest.getMyName(mycall); } function clearName(){ demo1.value=""; } </script> </head> <body> <h1>Ajax Test Page</h1> <input type="button" value="显示姓名" onclick="javascript:showMyName()"> <input type="button" value="清空" onclick="javascript:clearName()"><br> <input type="text" id="demo1"><br> </body> </html>?
大功告成,dwr就这么简单
?