我來談一談 WebDAV - - AJAX - JavaEye論壇

chief1985發表於2008-10-14
導讀:
WebDAV(Web-based Distributed Authoring and Versioning)是基於 HTTP 1.1 的一個通訊協議。它為 HTTP 1.1 新增了一些擴充套件(就是在 GET、POST、HEAD 等幾個 HTTP 標準方法以外新增了一些新的方法),使得應用程式可以直接將檔案寫到 Web Server 上,並且在寫檔案時候可以對檔案加鎖,寫完後對檔案解鎖,還可以支援對檔案所做的版本控制。這個協議的出現極大地增加了 Web 作為一種創作媒體對於我們的價值。基於 WebDAV 可以實現一個功能強大的內容管理系統或者配置管理系統。
我這裡不想詳細介紹 WebDAV協議,感興趣的可以在這裡找到相關的資料:
http://www.webdav.org
其中首先應該看的是這份 WebDAV FAQ:
http://www.webdav.org/other/faq.html

WebDAV 本身是一個類似於 HTTP 的通訊協議(IETF RFC 2518)。它與 HTTP  類似,需要實現伺服器和客戶端兩部分軟體。目前 WebDAV 已經有了大量相關的軟體實現。
在這裡是一些與 WebDAV 相關的軟體專案:
http://www.webdav.org/projects/

在這些專案中,我們最感興趣的當然是那些用 Java 實現的開源專案,Slide 是其中最重要的一個專案。Slide 是 Jakarta 專案的一個子專案(又是 Apache 山頭的),提供了一套 WebDAV 的伺服器端和客戶端的開發庫和 API,目前已經出到了 2.0 版。
http://jakarta.apache.org/slide/
在這裡下載最新的 Slide 2.0 的 Binary 包。
http://jakarta.apache.org/site/binindex.cgi
Slide 分成伺服器端和客戶端兩部分:
伺服器端:
http://apache.linuxforum.net/dist/jakarta/slide/binaries/jakarta-slide-server-bin-2.0.zip
客戶端:
http://apache.linuxforum.net/dist/jakarta/slide/binaries/jakarta-slide-webdavclient-bin-2.0.zip

我先講講伺服器端如何配置:
解壓縮,假設在 D:/tmp/jakarta-slide-server-2.0 下,你會在
D:/tmp/jakarta-slide-server-2.0/slide/webapp/
下找到兩個 war 檔案:
slide.war:Slide 伺服器端配置,用 Servlet 實現。
slide-doc.war:Slide 文件。

把這兩個 war 檔案 copy 到你的 Web Container(Tomcat、Jetty、Resin、etc.) 的部署目錄(一般是 webapps 目錄)下,然後重新啟動 Web Container。

在我現在寫的這個文件中伺服器端的配置就是這麼簡單。

再講講在客戶端如何配置。
WebDAV 有非常多的客戶端,用 Slide 客戶端的庫可以非常容易地寫出一個 WebDAV 客戶端程式。感興趣的可以看看這篇文件:
http://www.onjava.com/lpt/a/4387

我主要講講如何用 Windows 2000/XP 自帶的 Web Folder 功能來訪問 Web 資料夾。
Windows 2000/XP 安裝後已經具備訪問基於 WebDAV 協議的 Web 資料夾的功能,而且可以把 Web 資料夾對映為一個本地資料夾,支援拖放、拷貝/貼上等等功能,使用起來非常方便。
在 Windows 2000/XP 中新增 Web 資料夾的方法是:
開啟“網路上的芳鄰”,新增網路上的芳鄰,在“請鍵入網路上的芳鄰的位置”中輸入 Web 資料夾的 URL,例如我剛才用 Slide 配置好的 WebDAV 伺服器在:
http://localhost:8000/slide/
然後按照嚮導的提示繼續做就可以了,非常的簡單。
配置好了以後你就可以把這個 Web 資料夾當作本地資料夾一樣使用了。拖幾個檔案進去試試吧。關於上述 Web Folder 的配置可以參考這些文件:
http://chapters.marssociety.org/webdav/
(幾個閒著沒事孜孜不倦地研究人類如何移民火星的酷哥寫的文件)
還有 M$ 網站上的相關文件:
http://www.microsoft.com/windowsxp/home/using/productdoc/en/default.asp?url=/windowsxp/home/using/productdoc/en/using_webfolders_for_file_transfer.asp

M$ 的很多產品都內建有 WebDAV 的支援。例如:Office 2000、IE 5/6、Exchange Server、Frontpage。我配置好 WebDAV 伺服器後,當我訪問這個 URL
http://localhost:8000/slide/files/23.doc
時,Word 2000 可以識別出 Web 伺服器支援 WebDAV 協議。於是 Word 2000 可以直接編輯伺服器上的這個文件,編輯完後可以直接儲存在 Web 伺服器上。這個是不是比你習慣的 download->modify->upload 要方便的多?

WebDAV 還有很多話題,比如 WebDAV 完全可以取代 FTP。WebDAV 至少在以下幾個方面對 FTP 具有壓倒性優勢:
1、FTP 需要申請作業系統帳號。WebDAV 不需要申請任何作業系統帳號,它使用一套自己定義的安全完善的身份驗證機制。
2、FTP 的所有資料(包括登入資訊)全部使用明文傳送,加密必須要自己來實現,例如:可以手工用 GPG 來做這件事,但是畢竟還是不方便。用 WebDAV 就可以使用 HTTPS 來傳輸資料,加密解密的操作完全是在低層自動完成的。
3、FTP 傳輸資料的傳輸效率比較低,每傳送一個檔案需要開啟一個新的 TCP 連線,而 WebDAV 傳輸所有檔案只需要一個 TCP 連線。
4、FTP 不象 HTTP 那樣容易穿越防火牆,在廣域網的應用範圍比 HTTP 要小的多。而 WebDAV 因為是基於 HTTP 的,所以具有 HTTP 的所有優點。
5、FTP 客戶端工具沒有 WebDAV 客戶端工具使用方便。你剛才已經看到 WebDAV 伺服器配置好後,通過 Windows 2000/XP 的 Web Folder 方式訪問 Web 資料夾就和訪問本地資料夾沒有多少區別。如果應用程式支援 WebDAV 協議(例如 Word 2000),就可以直接開啟 Web 資料夾中的檔案並且編輯,然後直接儲存在原先的 Web 資料夾中。這個用起來簡直就和 Samba 完全一樣。你知道哪一個 FTP 客戶端使用起來有這麼方便嗎?

關於 WebDAV 更多的話題,以後慢慢再說吧。

Just for fun!

本文轉自
http://www.javaeye.com/topic/6568

相關文章