基于J2EE的ajax之DWR.docx

上传人:b****6 文档编号:7421610 上传时间:2023-01-23 格式:DOCX 页数:18 大小:110.82KB
下载 相关 举报
基于J2EE的ajax之DWR.docx_第1页
第1页 / 共18页
基于J2EE的ajax之DWR.docx_第2页
第2页 / 共18页
基于J2EE的ajax之DWR.docx_第3页
第3页 / 共18页
基于J2EE的ajax之DWR.docx_第4页
第4页 / 共18页
基于J2EE的ajax之DWR.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

基于J2EE的ajax之DWR.docx

《基于J2EE的ajax之DWR.docx》由会员分享,可在线阅读,更多相关《基于J2EE的ajax之DWR.docx(18页珍藏版)》请在冰豆网上搜索。

基于J2EE的ajax之DWR.docx

基于J2EE的ajax之DWR

基于J2EE的Ajax之DWR

一、什么是Ajax及它有什么好处:

1、什么是Ajax:

AJAX并不是一项新的技术,它实际上是几项成熟技术的组合产品,主要用到的技术有JavaScript、DOM、XML、XSLT、XHTML、CSS等

2、优点:

使用Ajax的最大优点,能在不更新整个页面的前提下维护数据,普通页面每点击一个链接,整个页面需要重新刷新一次,Ajax可以实现局部

减轻服务器的负担,因为Ajax的是“按需取数据”,如:

项目里级联菜单的处理就需要此项技术,用户只对菜单中的一部分进行操作的话,那就只读取的数据中的一指定的部分

能够提升用户体验,如下展示例子:

优点展示地址:

http:

//172.16.1.211:

8080/pic/imgSpecs.jsp

总体来讲:

Ajax适用于交互较多,频繁读数据,数据分类良好的WEB应用

二、常见的几种用Ajax实现的WEB项目:

1、地图:

2、网页页面局部刷新部分(如Tabs)

3、大家熟悉的抽奖系统

三、Ajax框架之DWR

1、Ajax目前的框架有很多种,为什么选择DWR?

现在有多种基于Java平台的Ajax-PRC工具包,但DWR是最成熟的,而且提供了能和Java的其它框架配合使用的功能如:

Spring、Jsf、Struts、Pageflow,最新发布的3.0还集合了Dojo框架

2、DWR(DirectWebRemoting)的主要功能:

客户端的JavaScrip可以直接调用远程的Java方法,并得到远程方法的返回值,我个人的理解就是JavaScript与Java通过DWR进行通讯交流(如下图)

Ajax例子展示地址:

http:

//172.16.1.211:

8080/lottery/lottery/index.html

http:

//172.16.1.211:

8080/dwr/index.html

http:

//172.16.1.211:

8080/dwr/dwr/index.html

:

8086/mo/

四、DWR的下载及相关配置

1.下载:

DWR官方网站:

http:

//directwebremoting.org/可以下载最新版

2.安装:

直接将dwr.jar及commons-logging.jar导入lib目录

3.配置:

首先需要在Web.xml文件中加入如下代码:

===================================================================

//配置DWR的核心Servlet

//指定DWR核心Servlet的名称

dwr

//指定DWR的核心Servlet的实现类

uk.ltd.getahead.dwr.DWRServlet

//是否打开DWR的调试状态

debug

true

//指定映射的URL

//指定核心DWRURL

dwr

/dwr/*

===================================================================

然后编写Java程序:

===================================================================

publicStringhello(Stringname){

returnname+",你好!

欢你来到A8...";

}

}

===================================================================

完成后增加一个dwr.xml文件,代码如下:

===================================================================

xmlversion="1.0"encoding="utf-8"?

>

//指定DWR配置文件的DTD信息

DOCTYPEdwrPUBLIC"-//GetAheadLimited//DTDDirectWebRemoting3.0//EN""http:

//getahead.org/dwr//dwr30.dtd">

—DWR配置文件的根元素都是DWR-->

—creator元素决定使用哪种创建器进行调用JavaScript如:

Spring、Struts、jsf,这里我们使用New创建,new代表新建一个JavaScript对象,不和Java的其它框架配合使用-->

//这里的javascript=”a8”代表对应生成的js文件就是a8.js如下图红框处

—使用class属性指定创建该Java实例的实现类-->

—实现a8.HelloA8类所需要的Bean-->

—Bean转换支持通配符”*”代表a8类包下的所有类-->

===================================================================

五、怎样应用到你的Web程序中?

1.在配置完成后DWR会自动生成三个js文件,这三个文件是动态生成的,生成的位置也是变化的,它们的位置会随着Web.xml文件中配置uk.ltd.gatahead.dwr.DWRServlet的URL不同而不同。

2.进入http:

//localhost:

8080/[YOUR-WEBAPP]/然后点击你创建的类,就可以看到生成的JavaScrip方法了,你可以根据实际情况修改/[YOUR-WEBAPP]/部分。

如下例:

这三个JS在引入到Jsp或者HTML中时,第一、二两个是必备的。

第一个JS:

是由dwr.xml文件使用create元素,暴露成JavaScript的实例

第二个JS:

Engine.js文件,DWR的核心,在调用过程中是不可缺少的文件

第三个JS:

Unil.js文件,DWR工具的JavaScript文件,该文件内提供了一些方法,通过这些方法可以简化DOM操作,该文件在引入过程中属于可选引入

3.导入了DWR动态生成的JavaScript脚本,我们就可以使用异步方式来调用这些方法,所谓的异步,就是使用一个回调函数,当调用远程Java方法,总是为该方法增加一个参数,参数列表的最后一个参数就是回调函数,回调函数当服务器响应时自动启动,用于将服务器响应显示在当前页面中,实际上使用回调函数有两种做法:

简单回调和使用JSON格式,简单回调是指,调用远程Java方法时增加一个方法参数,最后一个方法参数是回调函数,假设有如下一个类,该类里仅包含一个简单的hello方法:

===================================================================

//简单的处理类

PublicclassHello{

//仅包含一个简单的hello方法

publicStringhello(Stringname){

returnname+",你好!

欢你来到A8...";

}

}

===================================================================

将其暴露成JavaScript对象(假设被暴露成一个名为a8的JavaScript对象)可

以通过如下代码来使用该对象:

DWR入门

—导入DWR的核心JavaScript代码-->

编写:

hellodwr.js

functionhello(){

a8.hello(‘唐伯虎’,function(data){

alert(data);

});

}

或者

functionhello(){

a8.hello(‘唐伯虎’,feedback);

}

functionfeedback(data){

alert(data);

}

其中,’唐伯虎’是传给远程Java方法hello(Stringname)的name参数,feedback则就回调函数。

六、以下提供一个完整的例子,来演示实际过程中的操作:

预览地址:

http:

//172.16.1.211:

8080/dwr/index.html

Java端

===================================================================

HelloA8.java

//简单的处理类

publicclassHelloA8{

publicStringhello(Stringname){

returnname+",你好!

欢你来到A8...";

}

publicStringsendObj(Personp){

returnp.getName()+",您好!

欢你来到A8...";

}

publicPersongetBean(Stringname){

returnnewPerson("服务器端"+name);

}

publicListgetPersonList(){

Listresult=newArrayList();

result.add(newPerson("集合aaaa"));

result.add(newPerson("集合bbbb"));

result.add(newPerson("集合cccc"));

returnresult;

}

publicPerson[]getPersonArray(){

Person[]result=newPerson[3];

result[0]=newPerson("数组aaaa");

result[1]=newPerson("数组bbbb");

result[2]=newPerson("数组cccc");

returnresult;

}

publicMapgetPersonMap(){

Mapresult=newHashMap();

result.put("first",newPerson("Mapaaaa"));

result.put("second",newPerson("Mapbbb"));

result.put("third",newPerson("Mapcccc"));

returnresult;

}

publicStringsendList(Listpl){

Stringresult="";

for(Personp:

pl)

{

result+=p.getName()+"
";

}

returnresult;

}

publicStringsendMap(Mappmap){

Stringresult="";

for(Stringkey:

pmap.keySet())

{

result+="键"+key+"其值为:

"+pmap.get(key).getName()+"
";

}

returnresult;

}

}

===================================================================

Person.java

publicclassPerson

{

privateStringname;

publicPerson(){}

publicPerson(Stringname)

{

this.name=name;

}

publicvoidsetName(Stringname)

{

this.name=name;

}

publicStringgetName()

{

returnname;

}

}

===================================================================

修改web.xml配置

===================================================================

xmlversion="1.0"encoding="UTF-8"?

>

xmlns="

xmlns:

xsi="http:

//www.w3.org/2001/XMLSchema-instance"

xsi:

schemaLocation="

dwr

uk.ltd.getahead.dwr.DWRServlet

debug

true

--指定核心Servlet的URL映射-->

dwr

/dwr/*

index.html

===================================================================

 

Dwr.xml的配置(dwr.xml与web.xml位于同级目录下面)

===================================================================

xmlversion="1.0"encoding="GBK"?

>

DOCTYPEdwrPUBLIC"-//GetAheadLimited//DTDDirectWebRemoting2.0//EN""http:

//getahead.ltd.uk/dwr/dwr20.dtd">

[CDATA[

importa8.HelloA8;

importa8.Person;

importjava.util.List;

importjava.util.Map;

hello.sendList(List);

hello.sendMap(Map);

]]>

===================================================================

HTML内容

===================================================================

DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.0Transitional//EN">

DWR入门

DWR入门

请输入您的名字





下面是服务器的回应:


===================================================================

调用JS

===================================================================

//发送简单字符串参数,返回普通字符串

functionsendMessage(){

varname=document.getElementById("name").value;

hello.hello(name,cb)

}

functioncb(data){

document.getElementById("show").innerHTML=data;

}

//发送一个JavaBean对象作为参数,返回普通字符串

functionsendObject()

{

varnameValue=document.getElementById("name").value;

hello.sendObj({name:

nameValue},cb);

}

//调用返回JavaBean方法

functiongetBean(){

varname=document.getElementById("name").value;

hello.getBean(name,beanCb)

}

functionbeanCb(data){

document.getElementById("show").innerHTML=data.name+",您好,您已经学会了使用JavaBean返回值";

}

//调用返回集合的方法

functiongetBeanList(){

hello.getPersonList(listCb);

}

functionlistCb(data){

varresult='';

for(vari=0;i

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 高等教育 > 理学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1