dwr 操作使用
程序员文章站
2022-05-13 12:53:57
...
DWR(Direct Web Remoting)是一个WEB远程调用框架.利用这个框架可以让AJAX开发变得很简单.利用DWR可以在客户端利用JavaScript直接调用服务端的Java方法并返回值给JavaScript就好像直接本地客户端调用一样(DWR根据Java类来动态生成JavaScrip代码).它的最新版本DWR0.
6
添加许多特性如:支持Dom Trees的自动配置,支持Spring(JavaScript远程调用spring bean),更好浏览器支持,还支持一个可选的commons-logging日记操作.
第一步: 1.去官网下载dwr.jar包 http://directwebremoting.org/dwr/downloads/index.html 第二步:配置servlet <servlet> <servlet-name>dwrinvoker</servlet-name> <servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class> <!-- 自动生成测试页面(写上下列代码,项目启动后浏览器上输入这个url:http://ip:端口/项目名/dwr/index.html 页面上有个类的超链接点击后相信你会明白下一步该这么做) --> <init-param> <param-name>debug</param-name> <param-value>true</param-value> </init-param> </servlet> <!-- 配置映射关系 --> <servlet-mapping> <servlet-name>dwrinvoker</servlet-name> <url-pattern>/dwr/*</url-pattern> </servlet-mapping> 第三部:编写类 package com.chni.dwr; public class FirstDWR { /** * 调用js测试方法 * @param uname 传过来的用户名 * @return */ public String getTime(String uname){ try { Thread.sleep(5000); } catch (InterruptedException e) { e.printStackTrace(); } return uname+"你好:服务器上的时间是:"+System.currentTimeMillis(); } } 第四步:在WEB-INF下配置新建一个dwr.xml 文件 <!-- dwr.xml 配置文件 --> <!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN" "http://getahead.org/dwr/dwr20.dtd"> <dwr> <allow> <!-- javascript调用类方法使用的名字 creator 创建类的方式 scope 存储范围 page/request/session/application/script creator:职责实例化:方式 new 、none、spring 跟多详细信息建议网上吸收 --> <create javascript="FirstDWR" creator="new" scope="request" > <!-- 对应类 --> <param name="class" value="com.chni.dwr.FirstDWR"/> <!-- <exclude method="getTime"/>禁止页面上调用那些方法 <include method=""/>规定页面上只能调用那些方法 <filter class=""></filter> <auth role="" method=""/>许你指定一个J2EE的角色作为将来的访问控制检查 --> </create> <!-- bean的转换器,可以将com.pojos包下的所有类转换成Bean对象 可以模糊匹配(比如说com.chni.* 配置了com.chni包下所有类) --> <!-- <convert match="实体类" converter=""></convert> --> </allow> </dwr> 第五步:页面配置 <title>简单的dwr实现</title> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <!-- FirstDWR.js是DWR引擎自动生成的脚本 --> <script type='text/javascript' src='/dwr/dwr/interface/FirstDWR.js'></script> <!-- 这个文件是DWR的核心库,只要需要使用DWR就不能缺少该文件--> <script type='text/javascript' src='/dwr/dwr/engine.js'></script> <!-- dwr.util.js 是js的工具包 --> <script type='text/javascript' src='/dwr/dwr/util.js'></script> <script type="text/javascript"> //响应页面事件 调用java方法 function javaMethod(){ //获取页面文本框的值 var varStr=document.getElementById("name").value; /* 还可以使用dwr中的组件名获取文本框的值 var varStr=dwr.util.getValue("userName"); */ /*调用服务器对应方法 第一个参数java需要传入的参数, 第二个参数处理完之后返回来的值 相当于sampleXMLHttpReq.onreadystatechange = processResponse;, */ //页面加载 document.getElementById("none").style.display="inline"; FirstDWR.getTime(varStr,function(data){ if(data!=""){ document.getElementById("none").style.display="none"; } document.getElementById("vardata").value=data; }); } //清除 function clare(){ document.getElementById("name").value=''; document.getElementById("vardata").value=''; } </script> </head> <body> <pre> 你的用户名: <input type="text" name="userName" id="name" onchange="javaMethod()"/> <br>服务器回应: <textarea cols="50" rows="5" name="serverReplay" id="vardata"></textarea> <input type="button" value="清 除" onclick="clare()"> </pre> <div align="center" id="none" style="display: none"><img src="images/load.gif"/></div> </body> </html>