本节概述了使用 WebDAV 时经常遇到的术语。
URI。URI(统一资源标识符)是一种文件标识符,通过使用缩写的 URL 提供了额外的安全保护。URL 映射代替了 URL 的第一部分,从而对用户隐藏了文件的完整物理路径名。
源 URI。术语“源 URI”是指能用来访问资源的源代码的 URI。为了更好地理解源 URI 的概念,请考虑以下示例:
一个名为 foo.jsp 的 JSP 页面位于 URI /docs/date.jsp 处。该页面包含 HTML 标记和 Java 代码,当执行该代码时,将在客户机的浏览器中列显当前的日期。当服务器收到客户机要获取 foo.jsp 的 GET 请求后,先执行该 Java 代码,然后提供该页面。客户机收到的并不是该 foo.jsp 页面(因为它驻留在服务器上),而是一个显示当前日期的动态生成的页面。
如果您要创建一个源 URI(例如 /publish/docs)并将其映射到包含 foo.jsp 的 /docs 目录,则对 /publish/docs/foo.jsp 的请求将是请求 /docs/foo.jsp 页面的源代码。在这种情况下,服务器将提供页面而不执行 Java 代码。客户机将收到未经处理的页面,与保存在磁盘中的页面完全一样。
这样,对源 URI 的请求也就成了请求资源的源代码。
集合。 WebDAV 集合是为 WebDAV 操作启用的一个或一组资源。集合包含一组称为成员 URI 的 URI,它们用来标识启用了 WebDAV 的成员资源。
内部成员 URI。与集合 URI 直接相关的一个成员 URI。例如,如果 URL 为 http://info.sun.com/resources/info 的资源启用了 WebDAV,并且 URL 为 http://info.sun.com/resources/ 的资源也启用了 WebDAV,则 URL 为http://info.sun.com/resources/ 的资源就是一个集合,它包含 http://info.sun.com/resources/info 并将其作为一个内部成员。
属性。一个包含有关资源的描述性信息的名称/值对。使用属性可以有效地搜索和管理资源。例如,使用属性 "creationdate" 可以按资源的创建日期为所有资源建立索引,使用属性 "author" 可以按作者姓名创建索引。
动态属性。由服务器强制实现的属性。例如,动态属性 getcontentlength 有一个值,即 GET 请求返回的实体的长度,它是由服务器自动计算的。动态属性包括以下两类:
属性值是只读的,由服务器维护。
属性值由客户机维护,但是服务器对提交的值执行语法检查。
静态属性。不是由服务器强制实现的属性。服务器仅记录静态属性的值;客户机负责维护其一致性。
Sun Java System Web Server 支持以下动态属性:
creationdate
displayname
getcontentlanguage
getcontentlength
getcontenttype
gettag
getlastmodified
lockdiscovery
resourcetype
supportedlock
executable
Sun Java System Web Server 支持动态属性 executable,它允许客户机更改与资源相关联的文件访问权限。
以下是对 executable 动态属性的 PROPPATCH 请求示例:
PROPPATCH /test/index.html HTTP/1.1
Host: sun
Content-type: text/xml
Content-length: XXXX
<?xml version="1.0"?>
<A:propertyupdate xmlns:A="DAV:" xmlns:B="http://apache.org/dav/props/">
<A:set>
<A:prop>
<B:executable>T</B:executable>
</A:prop>
</A:set>
</A:propertyupdate>
锁定。锁定资源功能提供了这样一种机制,即可以保证在一个用户编辑资源时,其他用户不能对该资源进行修改。锁定可以防止发生覆盖冲突,解决了“丢失更新”的问题。
Sun Java System Web Server 支持两种锁定类型:共享和互斥。
新的 HTTP 标头。WebDAV 扩展了 HTTP/1.1 协议。它定义了新的 HTTP 标头,客户机可以通过这些新标头传递 WebDAV 资源请求。这些标头为:
Destination:
Lock-Token:
Timeout:
DAV:
If:
Depth:
Overwrite:
新的 HTTP 方法。WebDAV 引入了若干新的 HTTP 方法,用于指示启用了 WebDAV 的服务器如何处理请求。这些方法是对现有 HTTP 方法(例如 GET、PUT 和 DELETE)的补充,可用来执行 WebDAV 事务。下面简要介绍这些新的 HTTP 方法:
COPY。用于复制资源。复制集合使用 Depth: 标头,Destination: 标头用来指定目标。根据需要,COPY 方法还将使用Overwrite: 标头。
MOVE。用于移动资源。移动集合使用 Depth: 标头,Destination: 标头用来指定目标。根据需要,MOVE 方法还将使用 Overwrite: 标头。
PROPFIND。用于获取一个或多个资源的一个或多个属性。当客户机向服务器提交对某个集合的 PROPFIND 请求时,该请求可能会包含一个值为 0、1 或 infinity 的 Depth: 标头。
0。指定将获取指定 URI 处的集合的属性。
1。指定将获取集合以及指定的 URI 的下一级资源的属性。
infinity。指定将获取该集合及其包含的所有成员 URI 的属性。请注意,由于深度为无穷大的请求需要遍历整个集合,因而会大大增加服务器的负担。