Tomcat的WebDAV搭建

编者注

决定要编写WebDAV,但是首先要确认当前的Windows 10、Mac 10.12、linux系统能够支持访问webDAV。也就是说需要能够正确访问的应用用与服务测试

WebdavServlet.java位置

WebdavServlet.java的位置是在apache-tomcat-x.0.xx-src/java/org/apache/catalina/servlets/WebdavServlet.java。注意:该代码是在tomcat-src当中,而一般下载的tomcat为二进制版,需要进行引用。

使用

123

Servlet已经添加了WebDAV 2的支持。这些所有的HTTP请求是基于DefaultServlet。WebDAVServlet不应当被用作默认的servlet(例如:映射到/)在当前配置是不能工作的。

映射路径(例如/webdav/*)这个servlet效果进入web应用重新挂载sub-path目录,以WebDAV的接入方式展示所有资源。在重新挂在的资源树种,会保护WEB-INFMETA-INF目录。

若想允许WebDAV则需要在web.xml中添加内容:

<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,使用下列映射:

<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目录,目录树如下:

├── 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系统中,创建中文文件夹,报错,但是刷新可以正常显示

但是在进入中文目录时发生异常

转载于:https://my.oschina.net/hava/blog/781648

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值