把svnkit.jar添加到项目中,用于实现svn功能。 把jackson-all-1.6.2.jar添加到项目中,用于显示树列表。把javaee.ar添加到项目中。 新建一个类(SVNUtil.class)实现svn功能 private String svnRoot; private String userName; private String password; private SVNRepository repository; /*** * 构造方法 * @param svnRoot * svn根目录 */ public SVNUtil(String svnRoot) { this.svnRoot=svnRoot; } /*** * 构造方法 * @param svnRoot * svn根目录 * @param userName * 登录用户名 * @param password * 登录密码 */ public SVNUtil(String svnRoot, String userName, String password) { this.svnRoot=svnRoot; this.userName=userName; this.password=password; } /*** * 通过不同的协议初始化版本库 */ private static void setupLibrary() { // 对于使用http://和https:// DAVRepositoryFactory.setup(); //对于使用svn:/ /和svn+xxx:/ / SVNRepositoryFactoryImpl.setup(); //对于使用file:// FSRepositoryFactory.setup(); } 每次连接库都进行登陆验证 /*** * 登录验证 * @return */ public boolean login(){ setupLibrary(); try{ //创建库连接 repository=SVNRepositoryFactory.create(SVNURL.parseURIEncoded(this.svnRoot)); //身份验证 ISVNAuthenticationManager authManager = SVNWCUtil .createDefaultAuthenticationManager(this.userName, this.password); //创建身份验证管理器 repository.setAuthenticationManager(authManager); return true; } catch(SVNException svne){ svne.printStackTrace(); return false; } } 下面的方法实现查询给定路径下的条目列表功能 /*** * * @param path * @return 查询给定路径下的条目列表 * @throws SVNException */ @SuppressWarnings("rawtypes") public List listEntries(String path) throws SVNException { Collection entries = repository.getDir(path, -1, null, (Collection) null); Iterator iterator = entries.iterator(); List svns = new ArrayList(); while (iterator.hasNext()) { SVNDirEntry entry = (SVNDirEntry) iterator.next(); SVN svn = new SVN(); svn.setCommitMessage(entry.getCommitMessage()); svn.setDate(entry.getDate()); svn.setKind(entry.getKind().toString()); svn.setName(entry.getName()); svn.setRepositoryRoot(entry.getRepositoryRoot().toString()); svn.setRevision(entry.getRevision()); svn.setSize(entry.getSize()/1024); svn.setUrl(path.equals("") ? "/"+entry.getName() : path +"/"+entry.getName()); svn.setAuthor(entry.getAuthor()); svn.setState(svn.getKind() == "file"?null:"closed"); svns.add(svn); } 新建一个SVNServlet 添加一个方法用于把java对象转换为json字符串 /** * 将java对象转换为json字符串 * * @param obj * :可以为map,list,javaBean等 * @return json字符串 * @createTime 2010-11-23 下午07:42:58 */ public static String object2Json(Object obj) { try { StringWriter sw = new StringWriter(); JsonGenerator gen = new JsonFactory().createJsonGenerator(sw); mapper.writeValue(gen, obj); gen.close(); return sw.toString(); } catch (Exception e) { e.printStackTrace(); } return null; } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub this.doPost(request, response); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub Object svns = null; request.setCharacterEncoding("UTF-8"); response.setCharacterEncoding("UTF-8"); String path = request.getParameter("pid"); String url = "svn://localhost/svndemo1"; String usrName = "usrName"; String password = "password"; if (path == null) { path = ""; } path = new String(path.getBytes("ISO-8859-1"),"UTF-8"); String type = request.getParameter("type"); PrintWriter out = response.getWriter(); try { SVNUtil svnUtil = new SVNUtil(url, usrName, password); if (svnUtil.login()) { /*用于查询历史记录 if ("history".equals(type)) { List svnl = svnUtil.getHistory(path); HashMap sv = new HashMap(); sv.put("total", svnl.size()); sv.put("rows", svnl); svns = sv; } else {*/ svns = svnUtil.listEntries(path); //} //把java对象转换成json字符串 String json = SVNServlet.object2Json(svns); out.print(json); } else { System.out.println("验证失败"); } } catch (SVNException ex) { ex.printStackTrace(); } out.flush(); out.close(); } 新建一个index.jsp用户显示版本数列表,页面显示我使用了jquery-easyui模板 SVN
java开发怎么连接svn,java调用svnkit实现svn功能
最新推荐文章于 2024-05-24 14:46:56 发布