`
yiyu
  • 浏览: 188386 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

WebDav的java客户端开发包:Jackrabbit

    博客分类:
  • java
阅读更多
上一篇帖子“WebDav的java客户端开发包:sardine”中说到,对于开发WebDav客户端
sardine是一个很好的选择,但sardine并未实现WevDav的全部规范,所以我又试了试
apache的Jackrabbit,这个是已退休的slide的替代品。
Jackrabbit中的WevDav客户端只是一个附带的模块,并不是Jackrabbit的主要功能,
所以关于开发的文档很少,我只找到一篇:
http://wiki.apache.org/jackrabbit/WebDAV
我是下载的jackrabbit-standalone-2.0.3.jar包,其中应该大部分类都用不到,不过
我没找到单独的WebDav客户端的包。

演示程序的主要处理就是创建了一个目录,然后上载了jpg文件,最后列出了创建目录
中的内容。其中创建目录要用MkCol命令,上载用Put命令,列出目录内容其实是列出
指定路径下的所有属性。我没有仔细研究过WebDav的规范,估计jackrabbit是按照规范
实现的,需要理解WebDav的规范才能很好地使用,sardine则要接近对WebDav的一般性
理解,不需要理解相应的规范就可以快速地开始使用。

下面就是我的演示程序代码:

package test;

import java.io.FileInputStream;
import java.io.IOException;

import org.apache.commons.httpclient.Credentials;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.UsernamePasswordCredentials;
import org.apache.commons.httpclient.auth.AuthScope;
import org.apache.commons.httpclient.methods.InputStreamRequestEntity;
import org.apache.commons.httpclient.methods.RequestEntity;
import org.apache.jackrabbit.webdav.DavConstants;
import org.apache.jackrabbit.webdav.DavException;
import org.apache.jackrabbit.webdav.MultiStatus;
import org.apache.jackrabbit.webdav.MultiStatusResponse;
import org.apache.jackrabbit.webdav.client.methods.DavMethod;
import org.apache.jackrabbit.webdav.client.methods.MkColMethod;
import org.apache.jackrabbit.webdav.client.methods.PropFindMethod;
import org.apache.jackrabbit.webdav.client.methods.PutMethod;

public class TestJackrabbit {
	public static void main(String[] args) throws IOException, DavException {
		HttpClient client = new HttpClient();
		Credentials creds = new UsernamePasswordCredentials("admin", "admin");
		client.getState().setCredentials(AuthScope.ANY, creds);

		DavMethod mkCol = new MkColMethod("http://192.168.1.71:4502/crx/repository/crx.default/content/dam/testfolder");
		client.executeMethod(mkCol);
		System.out.println("mkcol testfolder:" + mkCol.getStatusCode() + " " + mkCol.getStatusText());

		PutMethod put = new PutMethod("http://192.168.1.71:4502/crx/repository/crx.default/content/dam/testfolder/testimg.jpg");
		RequestEntity requestEntity = new InputStreamRequestEntity(new FileInputStream("img12.jpg"));
		put.setRequestEntity(requestEntity);
		client.executeMethod(put);
		System.out.println("put image file:" + put.getStatusCode() + " " + put.getStatusText());
		
		DavMethod find = new PropFindMethod("http://192.168.1.71:4502/crx/repository/crx.default/content/dam/testfolder", DavConstants.PROPFIND_ALL_PROP, DavConstants.DEPTH_1);
	    client.executeMethod(find);
	    MultiStatus multiStatus = find.getResponseBodyAsMultiStatus();
	    MultiStatusResponse[] responses = multiStatus.getResponses();
	    System.out.println("Folders and files:");
	    for (int i=0; i<responses.length; i++) {
            System.out.println(responses[i].getHref());
	    }  
	}
}

分享到:
评论

相关推荐

    jackrabbit-webdav-2.7.1.zip

    1. Apache Jackrabbit:它是JCR规范的实现,提供了一个内容存储库,可以用来存储各种类型的数据。 2. WebDAV:这是一种增强HTTP协议的协议,允许用户远程编辑和管理文件,Jackrabbit的WebDAV模块提供了与内容存储库...

    android webdav工具类

    Jackrabbit是Apache基金会的一个开源项目,它提供了一个全面的Java Content Repository (JCR) 实现,也支持WebDAV协议。在Android中,如果需要用到更复杂的文件管理和版本控制功能,可以考虑使用Jackrabbit库。 4....

    jackrabbit-webdav-2.3.2.src.zip

    杰克兔(Jackrabbit)是Apache软件基金会的一个项目,它是一个完全实现WebDAV协议的Java库。WebDAV是一种基于HTTP协议的协议扩展,用于用户编辑和管理存储在远程服务器上的文档。Jackrabbit提供了对WebDAV协议的...

    jackrabbit最全入门教程

    1. **环境准备**:安装Java运行环境,下载并解压Jackrabbit的发布包。 2. **启动服务器**:运行Jackrabbit的启动脚本或类,启动内容存储库服务。 3. **连接到存储库**:使用JCR API创建Repository实例,并获取...

    java版本 Webdavserver ftpserver

    Java版本的WebDAVServer和FTPServer是两个用于文件共享和服务的服务器软件,它们都是基于Java语言开发的。WebDAV(Web-based Distributed Authoring and Versioning)是一种扩展HTTP协议的技术,允许用户编辑和管理...

    jackrabbit-jcr-tests-2.4.1.zip

    标题中的"jackrabbit-jcr-tests-2.4.1.zip"指的是Apache Jackrabbit项目的JCR测试模块的一个版本,这是针对内容管理系统(Content Management System, CMS)标准Java Content Repository (JCR)的一套测试用例。...

    TinyDMS:TinyDMS-小型易用的文档管理系统-开源

    2. **Java服务器界面**:TinyDMS利用Java Server Pages (JSP) 技术,这是一种用于创建动态网页的Java技术,它允许开发人员将业务逻辑与展示层分离,提高代码的可维护性和复用性。 3. **Jackrabbit和Lucene集成**:...

    Jetspeed 整合资料

    4. **内容管理**:与多种内容管理系统集成,如JSPM、WebDAV等,方便内容的发布和管理。 5. **集成能力**:支持与其他企业级应用(如SAP、Oracle等)集成,通过portlet 实现单点登录和数据交换。 6. **API 和开发...

Global site tag (gtag.js) - Google Analytics