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
我想請教關於..