决定要编写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系统中,建立中文文件夹,报错,可是刷新能够正常显示
可是在进入中文目录时发生异常