Slide 1

講師介紹

這個故事, 就從兩個技術人在一次研討會中的偶然相遇開始…

傑克: Hi 珍妮佛,
你知道這個 session 最主要是講?

內容主題

我們的目標

我們的目標

What We Will Focus on Here

Slide 9

珍妮佛: 什麼是 AJAX? 什麼又是非同步傳輸?

AJAX

Classic Web Applications

AJAX Web Applications

傑克: 那我該如何利用 AJAX 存取遠端網站資料呢?

XHR(XMLHttpRequest)

XHR

XHR

DEMO: Hello World

Slide 19

珍妮佛: 傑克, 這真是太神奇了, 但傳輸的資料一定要是 XML 格式嗎?

XHR 接受的資料型態

傑克: 那所有的瀏覽器都有支援 XHR 嗎?

瀏覽器支援

瀏覽器支援

珍妮佛: 真奇怪, 我使用 XHR, 瀏覽器卻一直跳出安全性問題?

跨網域支援

傑克: 少來了 tempo, 明明除了 XHR 之外, 還有其它方式來存取網站資料

<iframe>與<script>

<iframe>與<script>使用

<iframe>與<script>資料接收

<iframe>與<script>優缺點

tempo: 那我來做個整理吧

各種方法比較

小細節需要注意

珍妮佛: 好吧 tempo, 這太複雜了, 我只是想要存取網站上的資料而已

透過 AJAX Framework 來做非同步傳輸

透過 AJAX Framework 來做非同步傳輸

Slide 38

傑克: 什麼是 DWR 呢?

DWR(Direct Web Remoting)

DWR

珍妮佛: 我也想試試 DWR, 我該如何安裝呢?

Step 1: Download

Step 2: web.xml

Step 3: dwr.xml

DEMO: Installation

DWR 除錯視窗

建民: 那 tempo, 你應該要講怎麼做 Hello World 了吧?

Step1: 建立伺服器端的 Java 物件

Step2: 在 dwr.xml 中註冊類別

Step3: 在網頁中 include JavaScript

Step4: 撰寫 client 端 JavaScript

遠端物件方法呼叫方式

Demo: Hello World

Slide 55

傑克: 可以讓遠端 Java 物件存放在 session 或 application scope 嗎?

設定遠端物件的 Scope

珍妮佛: 參數可以是自訂的類別嗎?

Converters

Converters

Converters設定

傑克: 任何遠端 Java 物件上的方法都可以呼叫嗎?

<include>, <exclude>

tempo: 那該輪到做一個 Web Form 來試試看

Step1: 建立伺服器端的 Java 物件

Step2: 建立伺服器端的 Java 物件

Step3: client script

Demo: DWR Form

Slide 69

珍妮佛: 我也會做 jsp 的聊天室呀, 你前面的 Demo 有比較好嗎?

Reverse AJAX

Polling

Comet

Reverse AJAX

Reverse AJAX

珍妮佛: 我也想做像前面 Demo 那樣的聊天室~~

Step1: 建立伺服器端的 Java 物件

Step1: 建立伺服器端的 Java 物件

Demo: DWR Chat

傑克: 那你之前 Demo 的股市報價, 也是用同一種技術囉?

Step1: 建立伺服器端的 Java 物件

Demo: DWR Reverse

Slide 83

珍妮佛: 我不想呼叫物件, 我想把整個網頁 include 進來, 這可以嗎?

AJAX Includes

傑克:這樣也行, 那我想要呼叫我伺服器上的 spring beans, 不會也可以吧?

Spring Integration

珍妮佛:好吧, 那像 Struts, Webwork 應該也不是問題囉?

Struts Integration

Slide 90

傑克: 我想要連續呼叫三個遠端函式, 這樣使用者會等比較久嗎?

Batching

珍妮佛: 我看你的網頁右上方都有像 gmail 一樣的 loading message, 我也要

Loading Message

傑克: 你都沒有提到錯誤處理機制 :(

Error Handling

傑克: 哇, DWR/AJAX 真棒, 可是back/forward 鍵沒用了 :(

瀏覽器歷史紀錄問題

珍妮佛: 以上提到的方法所有瀏覽器都支援嗎?

瀏覽器支援

傑克: 我已經有使用其他 framework 了, 那我該如何整合 DHR 呢?

DWR 與其它 AJAX Framework

Slide 103

我想請教關於..