Tomcat与WebDAV的联系介绍
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 的协议,感兴趣的可以在这里找到相关的资料:
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 客户端使用起来有这么方便吗?
除了网上邻居以外,在 IE 中也可以直接打开 Web 文件夹。运行 IE,“文件->打开”,选中“以 Web 文件夹方式打开”。然后输入
http://localhost:8000/slide/
这样 IE 就直接打开了这个 Web 文件夹,你可以随便拖几个文件进去试试。如果是 Word 文件可以直接用 Word 打开并编辑,然后可以直接保存在 Web Server 上。这和上面在网上邻居中打开的效果是完全一样的。
你可以写 JS 来直接打开 Web 文件夹中的文件,例如:
<script language="javascript">
<!--
var word = new ActiveXObject("Word.Application");
http://localhost:8000/slide/
这样 IE 就直接打开了这个 Web 文件夹,你可以随便拖几个文件进去试试。如果是 Word 文件可以直接用 Word 打开并编辑,然后可以直接保存在 Web Server 上。这和上面在网上邻居中打开的效果是完全一样的。
你可以写 JS 来直接打开 Web 文件夹中的文件,例如:
<script language="javascript">
<!--
var word = new ActiveXObject("Word.Application");
word.Visible = true;
word.Documents.Open("http://localhost:8000/slide/files/23.doc");
//word.Quit();
-->
</script>
word.Documents.Open("http://localhost:8000/slide/files/23.doc");
//word.Quit();
-->
</script>
这里只是打开 Word 文件的例子,你当然还可以写出打开其它类型文件的例子。前提是这类文件的应用程序支持 WebDAV 协议并且提供了相应的控件可以被 JS 调用。
Word 打开这个文件后可以直接编辑,然后可以直接保存在 Web Server 上面,省去了你 download->modify->upload 的步骤,用起来是不是更方便?
缺省情况下,WebDAV 服务器在客户端第一次打开一个文件时会为这个文件加一个排他的写锁,以后所有客户端打开这个文件都是只读的。只有在第一个客户端保存文件后才会释放这个锁,然后其他客户端才能修改这个文件。
Slide 可以把文件保存在文件系统中,也可以把文件保存在数据库中。Slide 提供了 API 使你可以写 plugin 将文件保存在其它类型的存储系统中。
Slide 使用基于角色的权限控制,角色的权限可以继承。这些内容聊起来就多了,感兴趣的可以看 Slide 的配置文档。文档中还有与版本控制有关的内容。
Word 打开这个文件后可以直接编辑,然后可以直接保存在 Web Server 上面,省去了你 download->modify->upload 的步骤,用起来是不是更方便?
缺省情况下,WebDAV 服务器在客户端第一次打开一个文件时会为这个文件加一个排他的写锁,以后所有客户端打开这个文件都是只读的。只有在第一个客户端保存文件后才会释放这个锁,然后其他客户端才能修改这个文件。
Slide 可以把文件保存在文件系统中,也可以把文件保存在数据库中。Slide 提供了 API 使你可以写 plugin 将文件保存在其它类型的存储系统中。
Slide 使用基于角色的权限控制,角色的权限可以继承。这些内容聊起来就多了,感兴趣的可以看 Slide 的配置文档。文档中还有与版本控制有关的内容。
本文地址:http://www.45fan.com/dnjc/69858.html