決定要編寫WebDAV,可是首先要確認當前的Windows 十、Mac 10.十二、linux系統可以支持訪問webDAV。也就是說須要可以正確訪問的應用用與服務測試java
WebdavServlet.java
的位置是在apache-tomcat-x.0.xx-src/java/org/apache/catalina/servlets/WebdavServlet.java
。注意:該代碼是在tomcat-src當中,而通常下載的tomcat爲二進制版,須要進行引用。linux
Servlet已經添加了WebDAV 2的支持。這些全部的HTTP請求是基於DefaultServlet。WebDAVServlet不該當被用做默認的servlet(例如:映射到/)在當前配置是不能工做的。web
映射路徑(例如/webdav/*
)這個servlet效果進入web應用從新掛載sub-path目錄,以WebDAV的接入方式展現全部資源。在從新掛在的資源樹種,會保護WEB-INF
和META-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-INF
和META-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下訪問建立文件,成功
添加配置
<init-param> <param-name>allowSpecialPaths</param-name> <param-value>true</param-value> </init-param>
經過Chrome瀏覽器觀看,並無看到WEB-INF
可是在Windows裏面,能夠看到WEB-INF,可是進不去報錯
其餘文件能夠進行讀寫
在Windows系統中,建立中文文件夾,報錯,可是刷新能夠正常顯示
可是在進入中文目錄時發生異常