`
cjc
  • 浏览: 683871 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

DWR 入門與應用(二)

阅读更多
<script>function StorePage(){d=document;t=d.selection?(d.selection.type!='None'?d.selection.createRange().text:''):(d.getSelection?d.getSelection():'');void(keyit=window.open('http://www.365key.com/storeit.aspx?t='+escape(d.title)+'&u='+escape(d.location.href)+'&c='+escape(t),'keyit','scrollbars=no,width=475,height=575,left=75,top=20,status=no,resizable=yes'));keyit.focus();}</script>假設您要從資料庫中查詢出一些字串,然後填寫到表單的下拉選單中。

例如一個示意的Java程式如下:
1
2
3
4
5
6
7
8
package onlyfun.caterpillar;

public class Option {
public String[] getOptions() {
// 實際上這些字串是從資料庫中查到的啦…
return new String[] {"良葛格", "毛美眉", "米小狗"};
}
}


傳回的字串陣列,您要填寫到下拉選單中,當然,首先我們要在dwr.xml中開發這個物件…
1
2
3
4
5
6
7
8
9
10
<?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="OPT">
<param name="class" value="onlyfun.caterpillar.Option"/>
</create>
</allow>
</dwr>


這是我們的網頁…
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=BIG5">
<script src="option.js" type="text/javascript"></script>
<script src="dwr/interface/OPT.js" type="text/javascript"></script>
<script src="dwr/engine.js" type="text/javascript"></script>
<script src="dwr/util.js" type="text/javascript"></script>

</head>

<body>
選項: <select id="opts"></select>
</body>
</html>


傳回的字串陣列會填入opts這個select中,我們的option.js如下…
1
2
3
4
5
6
7
8
window.onload = function() {
OPT.getOptions(populate);
};

function populate(list){
DWRUtil.removeAllOptions("opts");
DWRUtil.addOptions("opts", list);
}


夠簡單了…不需要解釋了…

看一下結果…



好啦!我知道有人在說了,這個程式有夠無聊…Dead

改一下!就是個不錯的範例了,例如連動方塊,唔!在Ajax in action中叫啥?Dynamic double combo?…

假設一個會去從資料庫中查詢資料的Java程式示意如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
package onlyfun.caterpillar;

import java.util.Map;
import java.util.TreeMap;

public class Bike {
private Map<String, String[]> bikes;

public Bike() {
bikes = new TreeMap<String, String[]>();
bikes.put("2000", new String[] {"2000 T1", "2000 T2", "2000 T3"});
bikes.put("2001", new String[] {"2001 A1", "2001 A2"});
bikes.put("2002", new String[] {"2002 BW1", "2002 BW2", "2002 BW"});
bikes.put("2003", new String[] {"2003 S320"});
bikes.put("2004", new String[] {"2004 TA1", "2004 TA2", "2004 TA3"});
}

public String[] getYears() {
String[] keys = new String[bikes.size()];
int i = 0;
for(String key : bikes.keySet()) {
keys[i++] = key;
}
return keys;
}

public String[] getBikes(String year) {
return bikes.get(year);
}
}


getYears()跟getBkies()分別表示產品的年份跟型號,這邊用Map模擬,實際上資料是來自資料庫的查詢。

一樣的,在dwr.xml中設定:
1
2
3
4
5
6
7
8
9
10
<?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="Bike" scope="application">
<param name="class" value="onlyfun.caterpillar.Bike"/>
</create>
</allow>
</dwr>


我們會有個腳踏車年份與型號查詢頁面:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=BIG5">
<title>Insert title here</title>
<script type='text/javascript' src='dwr/interface/Bike.js'></script>
<script type='text/javascript' src='dwr/engine.js'></script>
<script type='text/javascript' src='dwr/util.js'></script>
<script type='text/javascript' src='bike.js'></script>
</head>
<body onload="refreshYearList();">
年份:<select id="years" onchange="refreshBikeList();"></select><br/><br/>
型號:<select id="bikes"></select><br/>
</body>
</html>


注意,在選完第一個年份後,會觸發onchange事件,接著第二個下拉選單會自動填上對應年份的型號,而不是按鈕按下,再去取得第二個下拉選單,然後refresh...blah...blah...

bike.js如下…
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
function refreshYearList() {
Bike.getYears(populateYearList);
}

function populateYearList(list){
DWRUtil.removeAllOptions("years");
DWRUtil.addOptions("years", list);
refreshBikeList();
}

function refreshBikeList() {
var year = $("years").value;
Bike.getBikes(year, populateBikeList);
}

function populateBikeList(list){
DWRUtil.removeAllOptions("bikes");
DWRUtil.addOptions("bikes", list);
}


一樣很簡單…

看個無聊的畫面…XD


分享到:
评论

相关推荐

    DWR入门与应用

    ### DWR入门与应用 #### 一、DWR简介及安装配置 DWR(Direct Web Remoting)是一种简化Ajax开发的框架,它使得Java开发者能够更轻松地将服务器端的Java对象暴露给客户端的JavaScript代码进行调用。通过DWR,开发者...

    DWR_入门与应用-林信良(良葛格)

    ### DWR 入门与应用知识点详解 #### 一、DWR 概念与作用 DWR(Direct Web Remoting)是一种开源框架,用于简化Java服务器端与浏览器客户端之间的交互。它通过允许JavaScript直接调用Java方法,为前端开发者提供了...

    DWR+dwr入门手册

    通过深入学习"DWR+dwr入门手册",你将掌握如何使用DWR构建高效的Ajax应用,提升Web应用的用户体验。记得实践中不断探索,理解DWR的原理并熟练运用到实际项目中,这将对你的IT职业生涯大有裨益。

    dwr入门 dwr学习资料

    DWR(Direct Web Remoting)是一...通过学习这套DWR入门资料,你将能够熟练地使用DWR创建动态、交互性强的Web应用,提高开发效率,同时提升用户体验。实践中不断探索,理论与实战相结合,将助你在Web开发领域更进一步。

    dwr API dwr入门教程

    在DWR入门教程中,首先会介绍DWR的基本概念和工作原理。DWR的核心是将Java方法暴露给JavaScript,通过在服务器端创建一个称为"逆向Ajax"的通道,使得JavaScript能够调用远程服务器上的Java方法。这个过程涉及到几个...

    DWR中文文档 dwr入门 dwr.jar

    **DWR入门步骤:** 1. **引入依赖**:首先,你需要在项目中添加dwr.jar到类路径中,这将包含所有DWR运行所需的类和库。 2. **配置DWR**:在Web应用的Web-INF目录下创建dwr.xml配置文件,设置允许的远程接口和方法...

    Dwr入门操作手册及dwr包

    **DWR(Direct Web Remoting)入门操作手册及DWR包** DWR,全称Direct Web Remoting,是一个...通过深入学习"Dwr入门操作手册"并实践使用"dwr.jar",你可以掌握如何利用DWR构建交互性更强、用户体验更好的Web应用。

    DWR入门 (二)用户实例

    **DWR入门(二)用户实例** DWR(Direct Web Remoting)是一种开源JavaScript库,它允许在浏览器和服务器之间进行实时、双向通信,从而实现Web应用中的Ajax功能。DWR使得开发者能够像操作本地对象一样操作服务器端...

    DWR入门例子(一个很好的dwr入门例子)

    在这个"DWR入门例子"中,我们将深入探讨如何使用DWR进行服务器和客户端之间的数据交换。 1. **DWR基本概念** - **反向AJAX**: DWR的核心理念是反向AJAX,即由服务器主动向客户端推送数据,而不仅仅是响应客户端的...

    STRUT2 DWR 入门STRUT2 DWR 入门STRUT2 DWR 入门STRUT2 DWR 入门

    总结来说,STRUT2 DWR入门涉及到的主要内容包括理解DWR的核心概念,了解STRUT2与DWR的集成方式,掌握DWR的配置和使用步骤,关注安全性与性能优化,以及在实际项目中的应用。通过学习和实践,开发者能够利用这两者的...

    DWR入门详解例子与说明,入门教程

    这个入门教程将引导你了解DWR的基本概念、安装配置以及实际应用。 1. **DWR的基本概念** DWR的核心功能是提供了一种简单的方式,使JavaScript能够调用服务器端的Java方法,反之亦然。这种方式称为远程方法调用...

    Dwr入门操作手册

    《DWR入门操作手册》深度解析与实践指南 一、DWR配置与使用基础 DWR,全称为Direct Web Remoting,是一种使Java对象能够直接从JavaScript调用的技术,简化了Ajax开发流程,使得前后端交互更为直接和高效。本文档...

    Ajax的DWR入门例子

    3. **DWR入门步骤**: - **准备环境**:首先,需要下载DWR的jar包,如dwrc.jar,将其放入项目的lib目录下。 - **创建Web项目**:创建一个新的Web项目,例如名为sayHello。 - **编写Java类**:创建一个名为...

    DWR入门教程及实例(含源代码)

    本教程“DWR入门教程及实例(含源代码)”旨在帮助初学者快速掌握DWR的基本概念和使用方法。教程内容可能包括以下几个核心知识点: 1. **DWR概述**:讲解DWR的基本理念,如何通过HTTP协议实现JavaScript与Java之间...

    AJAX技术之DWR框架入门

    **AJAX技术之DWR框架入门** AJAX(Asynchronous JavaScript and XML)是一种在无需刷新整个页面的情况下,能够更新部分网页的技术。它通过在后台与服务器进行少量数据交换,使得网页实现异步更新。这种技术可以提升...

    软件工程DWR入门教程.docx

    二、DWR 的配置文件 DWR 的配置文件 dwr.xml 用于定义哪些 Java 类可以被远程调用。例如: ```xml &lt;!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN" ...

    DWR入门demo

    通过深入学习和实践这个"DWR入门demo",你将能够掌握如何在Web应用中集成DWR,以及如何利用它来构建更互动、更动态的用户界面。同时,你也将了解到DWR在实际项目中的应用和优势,为进一步的RIA开发打下坚实基础。

    dwr入门例子 返回list

    Direct Web Remoting (DWR) 是一个开源的Java库,它允许JavaScript在浏览器端与服务器端的Java对象进行交互,实现动态的Web应用程序。DWR的主要功能是提供一种简单的方法来实现在客户端和服务器之间的异步通信,类似...

    dwr入门简单实现示例

    **二、DWR的工作原理** 1. **配置阶段**:在服务器端,我们需要在`dwr.xml`配置文件中声明可被远程调用的Java类和方法。 2. **编译阶段**:DWR自动生成JavaScript接口文件,供客户端使用。 3. **运行时**:客户端...

Global site tag (gtag.js) - Google Analytics