DWR使用总结

合集下载

dwr学习

dwr学习

/dwr/这段时间较闲,研究了一番dwr.发现dwr实现的AJAX有些地方确实很是先进.比如动态生成javascript代码;隐藏的http协议;javascript于java代码交互的是javascript对象(或字符串)等.以下是我临时译的一些东西.本来想全译,发现dwr实在是简单,就随便写了.英文居差,现一把.1、DWR: Easy AJAX for JAVA作为一个java open source library,DWR可以帮助开发人员完成应用AJAX技术的web程序。

它可以让浏览器上的javascript方法调用运行在web服务器上java 方法。

DWR主要由两部门组成。

javascript与web服务器通信并更新web页;运行在web服务器的Servlet处理请求并把响应发回浏览器。

DWR采用新颖的方法实现了AJAX(本来也没有确切的定义),在java代码基础上动态的生成javascript代码。

web开发者可以直接调用这些javascript代码,然而真正的代码是运行在web服务器上的java code。

出与安全考虑,开发者必须配置哪些java class暴露给DWR.(dwr.xml)这种从(java到javascript)调用机制给用户一种感觉,好象常规的RPC机制,或RMI or SOAP.但是它运行在web上,不需要任何浏览器插件。

DWR不认为浏览器和web服务器之间协议重要,把系统界面放在首位。

最大挑战是java method call的同步特征与ajax异步特性之间的矛盾。

在异步模型里,结果只有在方法结束后才有效。

DWR解决了这个问题,把回调函数当成参数传给方法,处理完成后,自动调用回调方法。

这个图表显示了,通过javascript事件,DWR能改变select的内容,当然这些内容由java代码返回。

javascript函数Data.getOptions(populateList)由DWR动态生成,这个函数会调用java class Data类的方法。

java中DWR的使用

java中DWR的使用

java中DWR的使⽤上次分享了关于frameset框架右下⾓弹出消息。

连接在这⾥那么我们项⽬开发中不消息的内容应该都是从数据库的消息表去获取的。

⽽不是说这样写死的。

那么在java中该怎么做?最后我选择了dwr来获取并展⽰消息。

下⾯是例⼦下载地址:贴出dwr.xml代码:<?xml version="1.0" encoding="UTF-8"?><!DOCTYPEdwrPUBLIC"-//GetAhead Limited//DTD Direct Web Remoting 3.0//EN""/dwr/dwr30.dtd"><dwr><allow><create creator="new" javascript="Msgdeal"><param name="class" value="com.msg.MsgDeal"/></create></allow></dwr>⾄于dwr我也是第⼀次使⽤~~ 所以只是分享⾃⼰使⽤的时候遇到的问题在上⾯的dwr.xml中我们配置了要调⽤的服务.下⾯贴出在jsp中如何引⽤:function Test1(){var _data = "";dwr.engine.setAsync(false);//设置同步Msgdeal.getMsg(1,function(data){_data = data;});//调⽤java中MsgDeal类的消息处理⽅法dwr.engine.setAsync(true); //设置到初始状态document.getElementById("serverResponse").value= _data; //设置获取的值if(_data > 0){//有新的消息//是消息图表闪动}else{//没有新消息}}那么我么在js中引⽤的 Msgdeal.getMsg(1,function(data){_data = data;});//调⽤java中MsgDeal类的消息处理⽅法这⾥的 Msgdeal就是我们在dwr.xml中配置的<create creator="new" javascript="Msgdeal">⾄于详细的使⽤⽅式⼤家下载下来⽰例就能看明⽩。

dwr使用方法

dwr使用方法

Dwr 框架基础用法1. Web.xml 中的配置:<servlet> <description>Direct Web Remoter Servlet</description> <display-name>DWR Servlet</display-name> <servlet-name>dwr-invoker</servlet-name> <servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class> <init-param> <param-name>debug</param-name> <param-value>false</param-value> </init-param> <load-on-startup>10</load-on-startup> </servlet> <servlet-mapping> <servlet-name>dwr-invoker</servlet-name> <url-pattern>/dwr/*</url-pattern> </servlet-mapping>2. Dwr.xml 中的配置:<dwr> <allow> <createcreator="new"javascript="JDate"> <paramname="class"value="java.util.Date" /> </create> <createcreator="new"javascript="DwrInvokeData"> <paramname="class"value="com.xxx.xxx.DWRACTION" /></create> </allow> </dwr>3. JSP 中需要引入:<scripttype='text/javascript' src='/项目名 /dwr/interface/DwrInvokeData.js'></script> <scripttype='text/javascript' src='/项目名/dwr/engine.js'></script> <scripttype='text/javascript' src='/项目名/dwr/util.js'></script>4. Java 代码还需要一个 java 类 Action 中些处理方法publicObjectTest(argType1arg1,argType2arg2,………,argTypeNargN)throws Exception{ //处理逻辑 Return Object; }5. Javascript 调用function test(){ //其他代码 DwrInvokeData.方法名(参数 1,参数 2,..,参数,testCallBack); //如:DwrInvokeData.Test(参数 1,参数 2,..,参数,testCallBack); //其他代码} //回调函数中返回参数为后台处理 Action 中的返回值,可以是任意 JavaBean,基本类型,数//组,集 合等 functiontestCallBack(返回参数){ //处理界面展代码 }。

DWR基础教程及配置

DWR基础教程及配置

有两种方法开始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类。

DWR详解

DWR详解

DWR(Direct Web Remoting)是一个开源的类库,可以帮助开发人员开发包含AJAX技术的网站.它可以允许在浏览器里的代码使用运行在WEB服务器上的JA V A函数,就像它就在浏览器里一样.它包含两个主要的部分:允许JavaScript从WEB服务器上一个遵循了AJAX原则的Servlet(小应用程序)中获取数据.另外一方面一个JavaScript库可以帮助网站开发人员轻松地利用获取的数据来动态改变网页的内容.DWR采取了一个类似AJAX的新方法来动态生成基于JA V A类的JavaScript代码.这样WEB 开发人员就可以在JavaScript里使用Java代码就像它们是浏览器的本地代码(客户端代码)一样;但是Java代码运行在WEB服务器端而且可以自由访问WEB 服务器的资源.出于安全的理由,WEB开发者必须适当地配置哪些Java类可以安全的被外部使用.这个从JA V A到JavaScript的远程功能方法给DWR的用户带来非常像传统的RPC机制,就像RMI或者SOAP一样,而且拥有运行在WEB上但是不需要浏览器插件的好处.DWR不认为浏览器/WEB服务器协议是重要的,而更乐于保证编程界面的简单自然.对此最大的挑战就是把AJAX的异步特性和正常JA V A方法调用的同步特性相结合.在异步模式下,结果数据在开始调用之后的一段时间之后才可以被异步访问获取到.DWR允许WEB开发人员传递一个回调函数,来异步处理Java函数调用过程.其配置如下:1.1、dwr.xml的配置<dwr><allow><create creator="new" javascript="testClass" ><param name="class" value="com.dwr.TestClass" /><include method="testMethod1"/></create></allow></dwr><allow>标签中包括可以暴露给javascript访问的东西。

dwr入门操作手册

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>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>一个可选的步骤是设置DWR为调试模式—象上面的例子那样—在servlet描述段中将debug参数设为true。

当DWR在调试模式时,你可以从HTMl网页中看到所有的可访问的Java对象。

包含了可用对象列表的网页会出现在/WEBAPP/dwr这个url上,它显示了对象的公共方法。

所列方法可以从页面中调用,允许你,第一次,运行服务器上的对象的方法。

下图显示了调试页的样子:调试页现在你必须让DWR知道通过XMLHttpRequest对象,什么对象将会接收请求。

Dreamweaver的应用分析

Dreamweaver的应用分析Dreamweaver的应用分析我想时线应该是Dreamweaver中最精彩的内容了。

因为它在实现网页动画时没有用到ActiveX、以及任何插件或Java applets,Dreamweaver通过改变层和页面图片在不同时间上的属性来制作动画。

也是因为这个原因,用Dreamweaver编辑的带有层动画的网页必须用4.0或更新的浏览器浏览。

用时线制作动画可以改变的属性有层的位置、大小、透明度或改变各层的上下位置关系。

用时线还可以对页面的各种行为进行设置。

也就是说,将行为也纳入时线的编辑,这使得我们所编辑的网页更富于变化、更精彩。

比如我们可以用时线改变一幅不属于某一个层的图片的文件源(这是制作动画最基本的方法),然后在某一个特定的帧上执行一个行为。

下面我们来看一下时线浮动面板。

时线面板负责改变层或图片在整个时间上的属性。

如果要打开这个面板可以选Window菜单中的timelines命令。

下面我们看这个面板的具体内容。

请看图B一。

面板上最上一栏是控制项。

下面标有大写B(Behavior)的栏是行为栏,中间是时间标尺,标尺上有一个红色的小块是监视块,这个小方块表明了当前的显示状况。

最下面是各个项目,图中有两个项目,一个是层项目,一个是图片项目。

下面我来介绍时线面板的具体用法。

选择栏中包含对时线名称的选择和修改,当我们建立多个时线时可以用这个选择项快速地在各时线间穿插,在网页比较复杂时建立多个时线可以更好的编辑或组织。

图中显示的时线是“timeline1”。

接下来的几个按钮是监视位置的选择,最左边一个是将监视块调到最左边。

倒退按钮是将监视块向左移动一小格,播放按钮是将监视块向右移动一小格,如果当前位置上没有任何项目则使用播放按钮监视块不会向前滑动,而使用倒退按钮则立即回到项目的尾端(最右端)。

这几个按钮中间是监视块所在的具体位置。

可以通过这个框确定监视块的详细位置。

“Fps”框允许作者指定动画每秒的帧数,缺省值为15,这是一个平均数,每秒15帧在大多数情况下可以达到较好的显示效果。

dreamweaver的学习心得

dreamweaver的学习心得dreamweaver的学习心得1杨老师下午讲解的是网页制作,他从网页布局(三段式)讲解,接着展示新浪、师院首页给我们看,在这过程中,始终都以实例讲解为主。

接着讲网页布局的方法:1、纸上布局法许多网页制作者不喜欢先画出页面布局的草图,而是直接在网页设计器里边设计布局边加内容。

这种不打草稿的方法不能让你设计出优秀的网页来。

所以在开始制作网页时,要先在纸上画出你页面的布局草图来。

2、软件布局法如果你不喜欢用纸来画出你的布局意图,那么你还可以利用软件来完成这些工作。

这个软件就是Photoshop。

Photoshop所具有的对图像的编辑功能用到设计网页布局上更显得心应手。

不像用纸来设计布局,利用Photoshop可以方便的使用颜色,使用图形,并且可以利用层的功能设计出用纸张无法实现的布局意念。

最后重点讲了布局的技术1、层叠样式表的应用2、表格布局3、框架布局最后,杨老师就DIV+CSS给我们进行详细介绍,我们按照他的进度,创建网站站点、创建文件夹、创建文件。

然后在DIV容器中插入动画,创建CSS文件,对不同的块元素进行排版,主要是浮动—float。

由于时间实在是太短了,很多知识都没的讲,比如我们常遇到的外边距,内边距,线条,以及一些基本的代码知识。

哈哈,我就不多说了,对于网页我也研究了好几年了,问题还真多,学过网页布局(table、DIV+CSS),学过平面设计(PS、CDR),学过编程(ASP、ASP。

NET),学过数据库(AC、SQL)。

可以说我现在完全可以独当一面,接过学校、企业、武警等的网页制作,评价都还不错!目前就是缺一个团队,从郑小军老师他们的成果看,不是一个人的努力能完成的,更多的是要一个志同道合的团队,回去我也该好好想想这个问题了。

dreamweaver的学习心得2转瞬之间,半个学期又接近尾声,在李导师的精心辅导下,度过了这个富有生机,富有朝气的学期。

学到了很多做梦也不会遇到的如此奇特的有趣知识,对于我来讲是一个很好的锻炼和充实的机会。

Dreamweaver总结

我想使网页的每个元素更规则些,但不想使用表格,怎么办?你可以使用层定位,首先选择“查看→防止层交错”,然后就可以通过“插入层”来达到定位的目的。

注意,请不要同时使用表格和层定位,那样会使你的版面一团糟.最后为了你的网页的兼容性,你可以把层转化成表格,因为早期的浏览器不支持层,方法是:选择“排版→把层转化成表格”即可。

如何精确的定位网页中各个元素的位置呢?精确定位网页中各个元素的位置有两种方法:使用表格或层。

使用表格是目前比较通用的做法,具体方法是:先在网页中建立一个表格,注意表格的边框宽度应为0。

然后再把各个元素按照你的要求放在各个表格单元之中。

仔细调整表格单元的大小以及表格边框的位置,这时在表格单元中的元素也会随之移动位置。

这样你就可以比较精确的定位网页中各个元素的位置了。

使用表格的优点是通用,几乎各个版本的浏览器可以致支持表格。

它的缺点是使用起来比较麻烦,需要仔细进行调整,而且定位不十分精确。

层在网页中可以随意放置,因此我们可以使用层来进行精确定位。

使用方法是,在网页中插入一个层,然后把你想要定位的元素放在层里,接着我们就可以把层放到所想要任何位置了。

此外,你还可以借助标尺和网格进行精确的定位。

因为层只在最新的浏览器中被支持,所以为了兼容旧的浏览器,我们可以把层转变为表格。

方法是:选择“修改(Modify)->版面布局模式(Layout Mode)->把层转化成表格(convert layers to table)”即可。

注意这时的层不能有重叠,我们可以在插入层之前选择“查看(view)->防止层交错(prevent layer overlaps)”来避免层的重叠。

一般来说转换后的页面可能会有一些变化,还需要我们手工进行调整。

最后有一点要注意,在进行表格和层的相互转换时,最好不要在一个页面中同时使用层与表格,那样可能会把你的页面弄的一团糟为何我定义的表格长宽和实际浏览效果不同a、如果表格定义的高度低于12个像素的话,Dreamweaver仍然显示的是15像素的高度,因为在单元格中会自动产生一个&nbs;,相当于一个看不到的字符,把表格给撑大了,解决的办法是在HTML 编辑窗口中删去其中的&nbs;即可。

DWR与JS的一些操作

Js一些操作手动添加表格选项:1.添加表格:<table align="center" border="1"><thead></thead><tbody id="userTable"> </tbody></table>2. JS代码如下:var table=document.getElementById("userTable");var dtr=table.insertRow();var uid=dtr.insertCell();uid.innerHTML=user.uid;3.JS添加下拉列表document.getElementById("name").options.add(new Option(“”,“”));4删除下拉列表的值document.getElementById("shi").options.length=0;DWR一些操作:1.增加dwr.xml文件,和修改web.xml,内容为:<dwr><allow><create javascript="DwrTe" creator="new" scope="application"> <param name="class" value="com.newer.bean.DwrTest"></param> </create></allow></dwr>修改web.xml 代码为:<servlet><servlet-name>dwr</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</servlet-name><url-pattern>/dwr/*</url-pattern></servlet-mapping>2.在页面引入两个虚拟的JS文件engine.js 和util.js 代码如下:<script type="text/javascript" src="dwr/engine.js"></script><script type="text/javascript" src="dwr/util.js"></script>3.创建DWR操作对象:<script type="text/javascript" src="dwr/interface/ DwrTe.js"></script>4.DWR操作对象:封装对象:var user={uname:name,upwd:pwd,uaddress:address};操作类返回的是bean 的话,可以直接通过对象.属性名就能拿到值;如果是集合可以通过遍历取出,代码:for(var i=0;i<userList.length;i++){var user=userList[i];user.uid;}5.下拉列表的添加:--注释:selClass为下拉列表名字claassList 为集合cid,cname 为classList集合中对象的属性。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

随笔- 7 文章- 1 评论- 2 DWR使用总结 这两天学了下DWR,现在总结一下。 DWR是方便使用AJAX连接JS和JAVA的的一个框架,把服务器端 Java 对象的方法公开给 JavaScript 代码。 如果是用dwr2.0的jar包,还需要同时导入log4j.jar和commons-loggin.jar,勿忘!! web.xml和dwr.xml放在WEB-INF下! ----------------------------- 配置web.xml:WEB工程启动的时候会在这个里面找到具体所用到的类的路径,由此进行

加载

dwr-invoke uk.ltd.getahead.dwr.DWRServlet //这个是调试用,如果正式发布请该为false,不过听说2.0就默认为true了 debug true //这个是DWR2.0必须的,不然会报java.lang.IllegalArgumentException classes java.lang.Object

dwr-invoke /dwr/*

----------------------------- 配置dwr.xml: dwr.xml的作用是让你告诉DWR哪些class中的哪些方法你需要暴露给

前台使用,当DWR启动时候根据dwr.xml这个文件把java类中的方法转成js中可用的类中方法,使前台可以使用。 注:以下是不全按dwr2.0写的,如果用的是DWR2.0,那java里暴露类(蓝字显示)不能写在属性里,应删除后写在前,alue="***java里暴露的class,必须写完整路径***" />。

----------------------------- 在html或js页面中加入 //切记不能 //Dwr的脚本驱动Js,以上两个必写 //这是个工具包,可以不调用

其实我们调用AAA.bbb([参数],callBack);就是做了以下这一步: (下面红字是包装好的,不在前台,所以即使你没有创建html或者jsp来调用,也可以通过localhost:8080/工程名/dwr 来看到你暴露的java类进行测试) function AAA() { }; AAA.bbb = function([参数], callback) { DWREngine._execute('/dwr/dwr', 'AAA', 'bbb', [参数], callback); }

通过在dwr.xml暴露的方法得到js里的方法,当我们调用AAA.bbb时候再通过/dwr/dwr转到DWRServlet中去用JAVA里的AAA.bbb方法,然后返回值到callback中(中间经过dwr.xml的convert)

---------------------------- 上面对dwr的工作大致分析了下,现在对于参数类型的不同,对dwr.xml也要进行修正。

DWR自动地在Java和JavaScript表示之间调整简单数据类型,这些类型包括Java原生类型和它们各自的封装类表示,还有String、Date、数组和集合类型。但如果参数类型非简单数据类型,则要通过转换。

调用返回JavaBean的java方法 在dwr.xml的标签中加入 //int,String,list等不需要显式的转换就可以被js拿到 //这句可以不写

标签负责公开用于Web远程的类和类的方法,标签则负责这些方法的参数和返回类型。convert元素的作用是告诉DWR在服务器端Java 对象表示和序列化的JavaScript之间如何转换数据类型。

这样在js端回调函数直接拿到的data就是一个javabean,可以直接通过data.xxx拿到bean的属性xxx。

调用有JavaBean参数的java方法 dwr.xml配置同上。 在JS端,把要传入的参数写成javabean方式,例:要传入一个名为student的javabean,参数有name,password,则 var stu = {name:"zhangsan",password:"zspassword"}; //这是json的表示方法 AAA.bbb(stu,callBack);

调用返回List、Set或者Map的java方法 dwr.xml配置同上。如果Collection里的数据是简单数据类型,则可不需要写

在JS端,以List,里面数据是bean为例,data是一个List型,只要用for循环就可以依次拿到数据。 遍历方法1: for(var i=0;i /*对于java方法的返回值为List(Set)的情况,DWR将其转 化为Object数组,传递个javascript*/ { alert(data[i].name+":"+data[i].password); }

遍历方法2: for(var property in data) //property为序号,从0开始 { var bean = data[property]; alert(bean.name+":"+bean.password); }

相比返回为javabean多了一个遍历而已。 如果java方法的返回值为Map,则如下 for(var property in data) //property为key值 /*对于 java方法的返回值为Map的情况,DWR将其转化为一个Object, 其中Object的属性为原Map的key值,属性值为原Map相应的 value值*/ { var bean = data[property]; alert(bean.username); alert(bean.password); }

如果知道key值,则可直接用:data.key拿到value

调用有List、Set或者Map参数的java方法 在dwr.xml的标签内加入:标签。 标签是用来声明java方法中List、Set或者Map参数所包含的确切类,以便java代码作出判断,是js-->java的。

例参数是javabean的List,则只要在参数为javabean的例子里构造时候加上[]即可,如下:

var stu = [{name:"zhangsan",password:"zspassword"},{name:"lisi",password:"lspassword"}]; //把List当作数组来处理 AAA.bbb(stu,callBack);

并且在dwr.xml中增加如下的配置段(刚才试验了下,不加也可以) import java.util.List; import com.dwr.AAA; //AAA的包路径要写完整 import com.dwr.TestBean; //javabean AAA.bbb(List); ]]>

例参数是javabean的Map,key是String,value是javabean,如下: var stu = { "key1":{name:"zhangsan",password:"zspassword"}, "key2":{name:"lisi",password:"lspassword"} }; AAA.bbb(stu,callBack);

相关文档
最新文档