DWR入门教程
dwrinvokedataaction 方法详解

dwrinvokedataaction 方法详解摘要:1.DWR简介2.dwrinvokedataaction方法概述3.参数详解4.示例代码与应用5.总结与建议正文:一、DWR简介DWR(Direct Web Remoting)是一个基于Java的远程方法调用框架,它允许在不同的Java应用程序之间直接调用方法,而无需共享任何中间对象。
DWR的核心思想是让Java对象直接在客户端运行,从而实现客户端与服务器端的无缝通信。
在本篇文章中,我们将重点介绍dwrinvokedataaction方法,它是DWR中非常重要的一个方法。
二、dwrinvokedataaction方法概述dwrinvokedataaction方法是用于在客户端调用服务器端方法的。
它接收一个Method对象作为参数,该对象包含了服务器端方法的所有信息。
在调用此方法时,DWR会自动将服务器端方法的参数转换为JSON格式,并通过Ajax请求发送到服务器。
同时,DWR还支持返回值的处理,可以将服务器端方法的返回值转换为JSON格式并返回给客户端。
三、参数详解1.Method对象:包含了服务器端方法的所有信息,如方法名、参数类型及参数值等。
2.参数值:可以是任意类型的对象,如基本数据类型、Java对象等。
需要注意的是,如果参数值为Java对象,则需要实现Serializable接口,以便在客户端和服务器之间传输。
3.异常处理:可以通过Throwable对象或Exception对象指定异常处理方式。
如果不需要处理异常,可以设置为null。
4.回调函数:可以设置一个回调函数,当服务器端方法调用成功或失败时,该回调函数会被调用。
回调函数接收一个Object参数,可以返回任何类型的值。
四、示例代码与应用以下是一个简单的示例代码,演示了如何使用dwrinvokedataaction方法调用服务器端方法:```java// 服务器端方法public class Server {public String sayHello(String name) {return "Hello, " + name;}}// 客户端代码public class Client {public static void main(String[] args) {// 创建服务器端对象Server server = new Server();// 调用服务器端方法String result = (String) DWR.invokeDataAction(server, "sayHello", "World");System.out.println(result);}}```在这个示例中,我们创建了一个简单的服务器端方法sayHello,并在客户端使用dwrinvokedataaction方法调用它。
Dwr教程(一)之用户名验证

Dwr教程(一)之用户名验证CSDN中对应资源(包含源代码和dwr.jar包)地址:/一.下载相应的包,配环境1. 下载dwr.jar,官方具体地址为(),有多个版本,我用的是version:2.0.M3;不同的版本会有些异同比如其中最常用的DWRUtil 工具,所以要注意版本。
查看版本很简单,解压开dwr.jar,查看dwr-version.properties就可以了2. 我使用的是MyEclipse5.5.1GA+Tomcat5.5这个应该没有什么影响,只是个人感觉这两个版本的比较稳定一点,JDK用的是1.6的,只要是1.5以上的应该都没有问题,或者低版本的也没有问题,不过推荐使用1.5以上的。
3. 创建一个Web Project名为dwrHello,配置web.xml:(配置方法很固定的,以下是简单的配置)<?xml version="1.0" encoding="UTF-8"?><web-app version="2.5" xmlns="/xml/ns/javaee"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/xml/ns/javaee/xml/ns/javaee/web-app_2_5.xsd"><servlet><servlet-name>dwr-invoker</servlet-name><servlet-class>org.directwebremoting.servlet.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><welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list></web-app>二.编写相应的后台service类并配置到dwr,是dwr能够在前台直接调用1. 创建dwr.service包,在其中创建T estDwrService.java类:package dwr.service;public class TestDwrService {/***验证用户名*@param username用户名*@return验证后的信息*/public String checkUsername(String username){//要返回的验证后的信息String flag = "";//这里可以改为调用数据库验证,原理都是一样的,if(username.equals("lxl"))flag = "用户名可用";elseflag = "用户名不存在";return flag;}}2. 配置TestDwrService.java到dwr.xml中:<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting2.0//EN" "/dwr/dwr20.dtd"><dwr><allow><!-- creator使用new的方式来创建,如果用了Spring,也可以使用spring。
Dwr入门操作手册

Dwr入门操作手册DWR配置和使用设置DWR的使用是简单的:将DWR的jar文件拷入Web应用的WEB-INF/lib目录中,在web.xml中增加一个servlet声明,并创建DWR的配置文件。
DWR的分发中需要使用一个单独的jar文件。
你必须将DWR servlet加到应用的WEB-INF/web.xml中布署描述段中去。
<servlet><servlet-name>dwr-invoker</servlet-name><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>一个可选的步骤是设置DWR为调试模式—象上面的例子那样—在servlet描述段中将debug参数设为true。
当DWR在调试模式时,你可以从HTMl网页中看到所有的可访问的Java对象。
包含了可用对象列表的网页会出现在/WEBAPP/dwr这个url上,它显示了对象的公共方法。
所列方法可以从页面中调用,允许你,第一次,运行服务器上的对象的方法。
下图显示了调试页的样子:调试页现在你必须让DWR知道通过XMLHttpRequest对象,什么对象将会接收请求。
这个任务由叫做dwr.xml 的配置文件来完成。
在配置文件中,定义了DWR允许你从网页中调用的对象。
跟我学DWR框架——如何应用DWR框架中的回调机制及应用示例

1.1跟我学DWR框架——如何应用DWR框架中的回调机制及应用示例1.1.1DWR框架中的回调机制及相关的应用示例1、DWR框架中的回调机制(1)在DWR框架中是如何实现AJAX技术中的“异步”功能由于DWR框架是根据dwr.xml生成和Java代码类似的JavaScript代码,因此在DWR 框架中通过引入回调函数来实现Ajax的异步调用特性——当执行的结果被返回时,DWR 框架会调用这个回调函数。
(2)回调函数定义的要求通常我们都需要传递外部信息给一个回调函数,因此所有的回调函数都应该只有一个参数——参数就是从远程方法返回的值,从而实现将服务器端的组件的方法的返回值给回调函数。
如下为代码示例:function callbackFunc(dataFromServer){// do something with dataFromServer and dataFromBrowser …}2、DWR框架中的回调机制的某个示例<%@ page contentType="text/html; charset=GBK" %><html><head><title> 体现DWR框架中的回调机制的Demo示例</title><script type='text/javascript'src='/DWRWebTest/dwr/interface/JDate.js'></script><script type='text/javascript' src='/DWRWebTest/dwr/engine.js'></script><script type='text/javascript' src='/DWRWebTest/dwr/util.js'></script><script language="javascript">function showTime(){JDate.toString(callBackFun);}callBackFun = function(toStringReturnTimeString){alert("当前的时间是:"+toStringReturnTimeString);}</script></head><body bgcolor="#ffffff"><a href="#" onclick="javascript:showTime()">点击我可以获得当前的时间</a></body></html>3、DWR框架中的回调机制与RMI 或者 SOAP等其它的实现机制的不同这种从远程的 Java 方法到 JavaScript 程序的方式给 DWR框架使用者一个感觉,好像传统的 RPC 方式,比如 RMI 或者 SOAP,事实上与之相比 DWR 的优势在于它不需要任何浏览器插件或者某种客户端的代理程序。
dwr使用教程

dwr使用教程DWR(Direct Web Remoting)是一个WEB远程调用框架.利用这个框架可以让AJAX 开发变得很简单.利用DWR可以在客户端利用JavaScript直接调用服务端的Java方法并返回值给JavaScript就好像直接本地客户端调用一样(DWR根据Java类来动态生成JavaScrip代码).它的最新版本 DWR0.6添加许多特性如:支持Dom Trees的自动配置,支持Spring(JavaScript远程调用spring bean),更好浏览器支持,还支持一个可选的commons-logging日记操作.以上摘自open-open,它通过反射,将java翻译成javascript,然后利用回调机制,轻松实现了javascript调用Java代码。
其大概开发过程如下:1.编写业务代码,该代码是和dwr无关的。
2.确认业务代码中哪些类、哪些方法是要由javascript直接访问的。
3.编写dwr组件,对步骤2的方法进行封装。
4.配置dwr组件到dwr.xml文件中,如果有必要,配置convert,进行java和javascript类型互转。
5.通过反射机制,dwr将步骤4的类转换成javascript代码,提供给前台页面调用。
5.编写网页,调用步骤5的javascript中的相关方法(间接调用服务器端的相关类的方法),执行业务逻辑,将执行结果利用回调函数返回。
6.在回调函数中,得到执行结果后,可以继续编写业务逻辑的相关javascript 代码。
下面以用户注册的例子,来说明其使用。
(注意,本次例子只是用于演示,说明DWR的使用,类设计并不是最优的)。
1.先介绍下相关的Java类User: 用户类,public class User {//登陆ID,主键唯一private String id;//姓名private String name;//口令private String password;//电子邮件private String email;//以下包含getXXX和setXXX方法.......}UserDAO:实现User的数据库访问,这里作为一个演示,编写测试代码public class UserDAO {//存放保存的数据private static Map dataMap = new HashMap();//持久用户public boolean save(User user) {if (dataMap.containsKey(user.getId()))return false;System.out.println("下面开始保存用户");System.out.println("id:"+user.getId());System.out.println("password:"+user.getPassword());System.out.println("name:"+user.getName());System.out.println("email:"+user.getEmail());dataMap.put(user.getId(), user);System.out.println("用户保存结束");return true;}//查找用户public User find(String id) {return (User)dataMap.get(id);}}DWRUserAccess:DWR组件,提供给javascript访问的。
dwr流程

一、dwr简介DWR(Direct Web Remoting)是一种AJAX解决方案。
DWR包括一个java库,以及一套javascript,使得我们可以用一种非常简单的方式,在页面上使用javascript直接调用后台的java对象。
DWR 是一个WEB远程调用框架.利用这个框架可以让AJAX开发变得很简单。
利用DWR可以在客户端利用JavaScript直接调用服务端的Java 方法并返回值给JavaScript就好像直接本地客户端调用一样(DWR 根据Java类来动态生成JavaScrip代码)。
Dwr在运行的时候,动态生成一个javascript库,这个库是对后台javabean调用的封装,我们可以直接使用这个库来实现直接调用JavaBean的目的。
二、dwr开发步骤开发步骤如下:1、为项目添加dwr框架(jar包)下载dwr.jar文件,并将其拷贝到项目的WebRoot/lib目录下;2、在web.xml中添加dwr控制器3、创建dwr.xml4、在dao层设置访问方法5、修改adminAddCate.jsp6、测试三、dwr实例1、创建一个Web项目2、导入dwr.jar包3、修改web.xml4、编辑业务代码5、创建并编辑dwr.xml代码如下:------------nameForm.java--------------public class nameForm{private String name;public String getName() {return name;}public void setName(String name) { = name;}}------------nameService.java--------------public class nameService{public int isExist(String name){int status;nameForm dealer = new nameForm();dealer.setName("泰山");if(name.equals(dealer.getName()))status = 1;elsestatus = 0;return status;}}----------------index.jsp------------------<%@page contentType="text/html; charset=gb2312"%><html><head><title></title><script type="text/javascript" src="/dwr/dwr/interface/test.js"></script><script type="text/javascript"src="/dwr/dwr/engine.js"></script> <script type="text/javascript"src="/dwr/dwr/util.js"></script><script type="text/javascript">function save(flag){var termName = document.all.input.value;test.isExist(termName,reply);function reply(data){if(data==1){alert("该名称已存在!");return false;}else{alert("该名称不存在!");}}}</script></head><body><center>请输入一座山名:<br><input type="text"name="input"id="input"/><br><input type="button"onClick="save('0')"value="检测"/></center></body></html>----------------web.xml------------------<?xml version="1.0"encoding="UTF-8"?><web-app version="2.5"xmlns="/xml/ns/javaee"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/xml/ns/javaee/xml/ns/javaee/web-app_2_5.xsd"><welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list><!--配置dwr --><servlet><servlet-name>dwr-invoker</servlet-name><servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class> <init-param><param-name>debug</param-name><param-value>true</param-value></init-param><init-param><param-name>scriptCompressed</param-name><param-value>false</param-value></init-param><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>dwr-invoker</servlet-name><url-pattern>/dwr/*</url-pattern></servlet-mapping></web-app>----------------dwr.xml------------------<?xml version="1.0"encoding="UTF-8"?><!DOCTYPE dwr PUBLIC"-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN""/dwr/dwr10.dtd"><dwr><allow><create creator="new"javascript="test"><param name="class"value="nameService"/><include method="isExist"/></create></allow></dwr>。
DWR-2型低温柔度测试仪操作规程

DWR-2型低温柔度测试仪操作规程
1、将电源插头插入220V交流电源插座内,接通电源,打开控制器电源开关。
2、按标准准备好测试样品,将样品放置于冷冻液槽料架上。
3、盖上冰柜上盖,使较软的样品冷冻至较硬的手感(冰柜的温度应调至比测试温度低5℃)。
4、调节静止测试棒间距,间距大小L按公式L=D+1Q+2计算(D为移动测试棒直径、Q为卷材厚度)。
5、根据卷材种类和规格,换上相应直径的移动测试棒。
6、将冷至合适温度的样品放置于测试机的移动测试棒和静止测试棒之间。
7、将整个测试机放入冷冻液内,盖上冰柜上盖,将待测的参数输入控制器内。
8、确认(手动/自动)转换开关拨至自动一方,按“运行”键移动测试棒将进入待测状态。
9、当温度已至,控制器输出触点断开,冰柜停止制冷,测试机启动测试。
10、测试完成,控制器报警,试验人员打开冰柜上盖,目测测试结果,并拿下已测样品。
11、合上冰柜上盖,按控制器“消警”键,控制器停止报警;移动测试棒将回复至起始点。
12、试验完毕后,关闭控制器电源开关,将电源插头从插座上拔掉;
随即将仪器清理干净,以备下次使用。
dwr入门自学总结

Dwr框架一般用在企业内部系统比较多,叫你搭建一个简单的dwr项目1.下载dwr的源文件2.新建一个web工程,将dwr用到的jar包都丢在你的lib下面3.配置过滤器,在web.xml里面写上下面的代码(全部copy)<?xml version="1.0"encoding="UTF-8"?><web-app version="2.5"xmlns="/xml/ns/javaee"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/xml/ns/javaee/xml/ns/javaee/web-app_2_5.xsd/dtd/web-app_2_3.dtd"><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-clas s><init-param><param-name>debug</param-name><param-value>true</param-value></init-param><init-param><param-name>activeReverseAjaxEnabled</param-name><param-value>true</param-value></init-param><init-param><param-name>initApplicationScopeCreatorsAtStartup</param-name><param-value>true</param-value></init-param><init-param><param-name>maxWaitAfterWrite</param-name><param-value>100</param-value></init-param><init-param><param-name>logLevel</param-name><param-value>warn</param-value></init-param><init-param><param-name>crossDomainSessionSecurity</param-name> <!-- 这个地方<param-value>false</param-value>这样写才不会出现session error的错 --><param-value>false</param-value></init-param><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>dwr-invoker</servlet-name><url-pattern>/dwr/*</url-pattern></servlet-mapping><welcome-file-list><welcome-file>index.jsp</welcome-file><welcome-file>index.html</welcome-file><welcome-file>index.htm</welcome-file></welcome-file-list></web-app>其中红色部分一定不能少,不然在运行项目的时候会出现session error 错误,自己可以试试。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
有两种方法开始DWR,简单的方式是下载WAR文件然后看看。
但是这不能帮你知道如何轻松的把DWR整合到你的web应用中,所以还是推荐你按照下面的3个步骤做:下载dwr.jar文件。
把它放到你的webapp的WEB-INF/lib目录下。
那里可能已经有很多其他的jar文件了。
需要把下面的代码加到WEB-INF/web.xml文件中。
<servlet>那部分需要和其他的<servlet>在一起,<servlet-mapping>部分也一样。
<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>在WEB-INF目录下的web.xml旁边创建一个dwr.xml文件。
可以从最简单的配置开始:<!DOCTYPE dwr PUBLIC"-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN""/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="your.java.Bean"/></create></allow></dwr>DWR配置文件定义了那些DWR会创建提供远程调用的Javascript类。
在上面的例子中我们定义了两个类来提供远程调用,并为其提供的Javascript类的名字。
在上面我们使用了new创建器,它会调用没有参数的构造函数来创建实例,但是所有JavaBean必须有这一构造函数。
还要注意DWR有一些限制:∙不要出现Javascript保留关键字;和保留关键字同名的函数指定被排除。
多数Javascript的关键字和Java是相同的。
所以你不可能有一个方法叫做"try()"。
但是该死"delete()"对与Javascript有着特殊意义,而对Java则不是。
∙Javascript方法重载是不支持的,所以尽量不要再Java中使用。
3. 访问下面的URLhttp://localhost:8080/[YOUR-WEBAPP]/dwr/你可以看见一个页面,里面有第二步中的类。
接着往里点,你会看到所有可以调用的方法列表。
这个页面是动态生成用来测试的例子。
自己动手试一下!在文档中有很多例子演示如何动态更改页面中的文字、更新列表、操作表单,还有直接更改table中的内容。
每一个都有如何实现的介绍。
另一种方式是看刚才的页面中提供的代码:到http://localhost:8080/\[YO UR-WEBAPP\]/dwr/ 页面,点击你的类。
查看源码,找到执行方法的那几行,把那些文字粘贴到你的HTML或JSP中。
要包括下面这些能产生神奇效果的Javascript文件的链接。
<scriptsrc='/[YOUR-WEBAPP]/dwr/interface/[YOUR-SCRIPT].js'></script><script src='/[YOUR-WEBAPP]/dwr/engine.js'></script>你也可以把其中/[YOUR-WEBAPP]/替换成你的web页面的相对路径。
DWR根据dwr.xml生成和Java代码类似的Javascript代码。
相对而言Java同步调用,创建与Java代码匹配的Ajax远程调用接口的最大挑战来至与实现Ajax的异步调用特性。
DWR通过引入回调函数来解决这个问题,当结果被返回时,DWR会调用这个函数。
有两种推荐的方式来使用DWR实现远程方法调用。
可以通过把回调函数放在参数列表里,也可以把回调函数放到元数据对象里。
当然也可以把回调函数做为第一个参数,但是不建议使用这种方法。
因为这种方法在处理自动处理http对象时(查看"Alternative Method")上会有问题。
这个方法主要是为向下兼容而存在的。
假设你有一个这样的Java方法:public class Remote {public String getData(int index) { ... }}我们可以在Javascript中这样使用:<script type="text/javascript"src="[WEBAPP]/dwr/interface/Remote.js"> </script><script type="text/javascript"src="[WEBAPP]/dwr/engine.js"> </script>...function handleGetData(str) {alert(str);}Remote.getData(42, handleGetData);42是Java方法getData()的一个参数。
此外你也可以使用这种减缩格式:Remote.getData(42, function(str) { alert(str); });另外一种语法时使用"调用元数据对象"来指定回调函数和其他的选项。
上面的例子可以写成这样:Remote.getData(42, {callback:function(str) { alert(str); }});这种方法有很多优点:易于阅读,更重要的指定额外的调用选项。
超时和错误处理在回调函数的元数据中你可以指定超时和错误的处理方式。
例如:Remote.getData(42, {callback:function(str) { alert(str); },timeout:5000,errorHandler:function(message) { alert("Oops: " + message); } });有些情况下我们很难区分各种回调选项(记住,Javascript是不支持函数重载的)。
例如:Remote.method({ timeout:3 }, { errorHandler:somefunc });这两个参数之一是bean的参数,另一个是元数据对象,但是我们不能清楚的告诉DWR哪个是哪个。
为了可以跨浏览器,我们假定null == undefined。
所以当前的情况,规则是:如果第一个或最后一个是一个函数,那么它就是回调函数,没有元数据对象,并且其他参数都是Java 的方法参数。
∙另外,如果最后一个参数是一个对象,这个对象中有一个callback成员,并且它是个函数,那么这个对象就是元数据对象,其他的都是Java方法参数。
∙另外,如果第一个参数是null,我们就假设没有回调函数,并且其他的都是Java方法参数。
尽管如此,我们会检查最后一个参数是不是null,如果是就发出警告。
∙最后如果最后一个参数是null,那么就没有callback函数。
∙另外,发出错误信号是个糟糕的请求格式。
假设你有这样的Java方法:public class Remote {public void setPerson(Person p) {this.person = p;}}Person对象的结构是这样的:public Person {private String name;private int age;private Date[] appointments;// getters and setters ...}那么你可以在Javascript中这样写:var p = {name:"Fred Bloggs",age:42,appointments:[ new Date(), new Date("1 Jan 2008") ]};Remote.setPerson(p);在Javascript没有出现的字段,在Java中就不会被设置。
因为setter都是返回'void',我们就不需要使用callback函数了。
如果你想要一个返回void的服务端方法的完整版,你也可以加上callback函数。
很明显DWR不会向它传递任何参数。
这个问题的现象是在启动有DWR的Web应用时出现如下stack trace:root causejavax.xml.transform.TransformerFactoryConfigurationError:Provider org.apache.xalan.processor.TransformerFactoryImpl not foundjavax.xml.transform.TransformerFactory.newInstance(UnknownSource)这个问题和DWR没有什么关系,那是因为Tomcat没有配置好。
比较简单的解决办法是下载Xalan替换掉$TOMCAT-HOME/common/lib目录下的xalan.jar文件。