Web 容器如何计算对应于备用文档根目录的文件系统资源路径?

配置备用文档根目录时,请牢记以下规则:

  • 备用文档根目录(更明确地说,它们的 <code>from</code> 值)与某个请求的路径信息(通过调用 <code>javax.servlet.http.HttpServletRequest.getPathInfo()</code> 获取)相匹配。
  • 其请求已与某个备用文档根目录匹配的资源的本地路径通过如下方式计算得出:将该请求的路径信息附加到备用文档根目录的 <code>dir</code> 值后面。

例如,考虑 <code>sun-web.xml</code> 中的如下备用文档根目录声明:

<property name=''alternatedocroot_1'' value=''from=/orderstore/* dir=C:/stryker_cci/orderstore''/>

和此请求 URL:

http://localhost/CIWeb/orderstore/test.txt

假设该请求映射到部署于 <code>/CIWeb</code> 的 Web 应用程序,这意味着该请求 URL 的上下文根目录部分为 <code>/CIWeb</code>,其路径信息部分为 <code>/orderstore/test.txt</code>(与上述备用文档根目录匹配)。将在其中查找所请求资源的本地文件系统路径的值为备用文档根目录的 <code>dir</code> 值:

C:/stryker_cci/orderstore

后面附加该请求的路径信息:

/orderstore/test.txt

结果,得到的路径是:

C:/stryker_cci/orderstore/orderstore/test.txt

又例如,考虑 <code>sun-web.xml</code> 中的如下备用文档根目录声明:

<property name=''alternatedocroot_1'' value=''from=/myimages/* dir=/images''/>

和此请求 URL:

http://localhost:8080/myimages/image1.jpg

进一步假设上述请求映射到部署于根上下文 (<code>/</code>) 的 Web 应用程序。此时,该请求的路径信息计算为:

/myimages/image1.jpg

意味着它与上述备用文档根目录匹配。将在其中查找所请求资源的本地文件系统路径的值为备用文档根目录的 <code>dir</code> 值:

/images

后面附加该请求的路径信息:

/myimages/image1.jpg

结果,得到的路径是:

/images/myimages/image1.jpg

英文