Tomcat的WebDAV搭建

編者注

決定要編寫WebDAV,可是首先要確認當前的Windows 十、Mac 10.十二、linux系統可以支持訪問webDAV。也就是說須要可以正確訪問的應用用與服務測試java

WebdavServlet.java位置

WebdavServlet.java的位置是在apache-tomcat-x.0.xx-src/java/org/apache/catalina/servlets/WebdavServlet.java。注意:該代碼是在tomcat-src當中,而通常下載的tomcat爲二進制版,須要進行引用。linux

使用

123

Servlet已經添加了WebDAV 2的支持。這些全部的HTTP請求是基於DefaultServlet。WebDAVServlet不該當被用做默認的servlet(例如:映射到/)在當前配置是不能工做的。web

映射路徑(例如/webdav/*)這個servlet效果進入web應用從新掛載sub-path目錄,以WebDAV的接入方式展現全部資源。在從新掛在的資源樹種,會保護WEB-INFMETA-INF目錄。apache

若想容許WebDAV則須要在web.xml中添加內容:windows

<servlet>
    <servlet-name>webdav</servlet-name>
    <servlet-class>org.apache.catalina.servlets.WebdavServlet</servlet-class>

    <init-param>
        <param-name>debug</param-name>
        <param-value>0</param-value>
    </init-param>
    <init-param>
        <param-name>listings</param-name>
        <param-value>false</param-value>
    </init-param>
</servlet>
<servlet-mapping>
    <servlet-name>webdav</servlet-name>
    <url-pattern>/*</url-pattern>
</servlet-mapping>

上面的配置訪問是隻讀。想要開啓讀寫模式須要添加:瀏覽器

<init-param>
    <param-name>readonly</param-name>
    <param-value>false</param-value>
</init-param>

想要編輯內容經過不一樣的URL,使用下列映射:tomcat

<servlet-mapping>
    <servlet-name>webdav</servlet-name>
    <url-pattern>webdavedit/*</url-pattern>
</servlet-mapping>

默認的接入方式/WEB-INFMETA-INF 經過WebDAV是不能夠通的。想要容許訪問這個URLs須要添加:安全

<init-param>
    <param-name>allowSpecialPaths</param-name>
    <param-value>true</param-value>
</init-param>

不要忘記安全訪問須要適當的編輯URLs,尤爲是若是allowSpecialPaths使用。使用上面的配置,內容須要確認普通用戶可以訪問。用戶須要經過驗證才能容許編輯內容網絡

啓動與訪問測試

第一次沒法訪問

在webapp中建立webdav目錄,目錄樹以下:app

├── WEB-INF
│   └── web.xml
└── test.txt

按照第一個配置編輯web.xml運行tomcat,經過瀏覽器http://localhost:8080/webdav並不能訪問,windows也沒法配置網絡配置

第二次能夠只讀訪問

修改配置文件

<init-param>
        <!-- listing must set true -->
        <param-name>listings</param-name>
        <param-value>true</param-value>
    </init-param>

測試,瀏覽器能夠訪問內容

Filename	Size	Last Modified
   .DS_Store	6.0 kb	Fri, 04 Nov 2016 05:55:02 GMT
   test.txt	0.1 kb	Fri, 04 Nov 2016 06:09:32 GMT

測試windows 10添加網絡位置也可使用

第三次能夠讀寫訪問

修改配置

<init-param>
    <param-name>readonly</param-name>
    <param-value>false</param-value>
</init-param>

在Windows下訪問建立文件,成功

第四次訪問讀取WEB-INF

添加配置

<init-param>
    <param-name>allowSpecialPaths</param-name>
    <param-value>true</param-value>
</init-param>

經過Chrome瀏覽器觀看,並無看到WEB-INF

可是在Windows裏面,能夠看到WEB-INF,可是進不去報錯
其餘文件能夠進行讀寫

問題

在Windows系統中,建立中文文件夾,報錯,可是刷新能夠正常顯示

可是在進入中文目錄時發生異常

相關文章
相關標籤/搜索