⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 buildurl.java

📁 一个socket例子它很好地实现了网络通信功能是一个比较好的源码
💻 JAVA
字号:
/*
 * FileName CreateUrlUtil.java
 * Create Date 2006-5-17
 * Author shiwei
 * Descript 生成各种类型的URL
 * Version 
 */
package com.snoics.reptile.link.createUrl;

import java.net.URI;
import java.util.regex.Pattern;

import com.snoics.base.net.SnoicsUrl;
import com.snoics.base.util.RandomSeed;
import com.snoics.base.util.StringClass;
import com.snoics.base.util.regex.Regex;
import com.snoics.reptile.link.TempLink;
import com.snoics.reptile.regex.filter.IRegexFilter;
import com.snoics.reptile.regex.filter.IndexTypeFilter;
import com.snoics.reptile.regex.filter.RemoteUrlFilter;
import com.snoics.reptile.regex.filter.ResolvedUrlFilter;
import com.snoics.reptile.system.common.Common;
import com.snoics.reptile.system.common.CommonObject;

public class BuildUrl implements IBuildUrl{
	private Regex regex=new Regex();
	private TempLink tempLink=new TempLink();
	private CommonObject commonObject=new CommonObject();
	private SnoicsUrl snoicsUrl=new SnoicsUrl();
	
	/**
	 * 取得文件存放的根目录
	 * @return String
	 */
	public String getFileRootPath(){
		return commonObject.getConfigInfo(Common.CONFIGFILE_NODE_FILEROOTPATH);
	}
	
	/**
	 * 生成相对于website的URL
	 * @param url 当前URL
	 * @param parentUrl 上一级页面绝对URL
	 * @return String
	 */
	public String buildRelativizeUrl(String url,String parentUrl){
		if(url.startsWith("/")){
			return url;
		}
		IRegexFilter remoteUrlFilter=new RemoteUrlFilter();
		remoteUrlFilter.setUrl(url);
		if(remoteUrlFilter.filter()){
			return url;
		}
		IRegexFilter resolvedUrlFilter=new ResolvedUrlFilter();
		resolvedUrlFilter.setUrl(url);
		String website="^"+commonObject.getConfigInfo(Common.CONFIGFILE_NODE_WEBSITE);
		website=StringClass.getPreString(website,"/");
		String websiteRegexString=website+":?[0-9]*"+"/";
		if(resolvedUrlFilter.filter()){
			url=regex.getReplaceFirst(url,"",websiteRegexString,Pattern.CASE_INSENSITIVE);
			url="/"+url;
			url=StringClass.getFormatPath(url);
		}else{
			url=StringClass.getFormatPath(url);
			parentUrl=regex.getReplaceFirst(parentUrl,"",websiteRegexString,Pattern.CASE_INSENSITIVE);
			parentUrl="/"+parentUrl;
			parentUrl=StringClass.getFormatPath(parentUrl);
			URI uri=snoicsUrl.getResolved(parentUrl,url);
			if(uri==null){
				return url;
			}else{
				url=uri.toString();
			}
		}
		return url;
	}
	
	/**
	 * 生成相对于parentUrl的URL
	 * @param url 当前URL
	 * @param parentUrl 上一级页面绝对URL
	 * @return String
	 */
	public String buildRelativizeWithParentUrl(String url,String parentUrl){
		IRegexFilter resolvedUrlFilter=new ResolvedUrlFilter();
		resolvedUrlFilter.setUrl(url);
		if(resolvedUrlFilter.filter()){
			return url;
		}
		if(url.startsWith("/")){
			return url;
		}
		url=StringClass.getFormatPath(url);
		URI uri=snoicsUrl.getRelativize(parentUrl,url);
		if(uri==null){
			return url;
		}else{
			url=uri.toString();
		}
		return url;
	}
	
	/**
	 * 生成绝对URL
	 * @param url 当前URL
	 * @param parentUrl 上一级页面绝对URL
	 * @return String
	 */
	public String buildResolvedUrl(String url,String parentUrl){
		IRegexFilter remoteUrlFilter=new RemoteUrlFilter();
		remoteUrlFilter.setUrl(url);
		if(remoteUrlFilter.filter()){
			return url;
		}
		IRegexFilter resolvedUrlFilter=new ResolvedUrlFilter();
		resolvedUrlFilter.setUrl(url);
		if(resolvedUrlFilter.filter()){
			return url;
		}else{
			url=StringClass.getFormatPath(url);
			String website=commonObject.getConfigInfo(Common.CONFIGFILE_NODE_WEBSITE);
			if(url.startsWith("/")){
				if(website.endsWith("/")){
					website=website.substring(0,website.length()-1);
				}
				return website+url;
			}else{
				if(parentUrl==null){
					URI uri=snoicsUrl.getResolved(website,url);
					if(uri==null){
						return url;
					}else{
						url=uri.toString();
					}
				}else{
					URI uri=snoicsUrl.getResolved(parentUrl,url);
					if(uri==null){
						return url;
					}else{
						url=uri.toString();
					}
				}
			}
		}
		return url;
	}
	
	/**
	 * 返回重新生成后的相对于website的URL
	 * @param url
	 * @param parentUrl
	 * @return String
	 */
    public String buildLocalHtmlRelativizeFileName(String url,String parentUrl){
    	String pageFlagString=StringClass.getLastString(url,"#");
    	url=StringClass.getPreString(url,"#");
    	if(url.equals("")){
    		url=StringClass.getLastString(parentUrl,"/");
    		url=StringClass.getPreString(url,"#");
    	}
    	String relativizeUrl=buildRelativizeUrl(url,parentUrl);
    	String relativizeWithWebsiteUrl=buildRelativizeUrl(url,parentUrl);
    	String newRelativizeUrl="";
    	String temprelativizeUrl=tempLink.getLink(relativizeWithWebsiteUrl);
    	if(temprelativizeUrl!=null){
        	if(!pageFlagString.equals("")){
        		temprelativizeUrl=temprelativizeUrl+"#"+pageFlagString;
        	}
        	return temprelativizeUrl;
    	}else{
    		String filename="";
    		IRegexFilter indexTypeFilter=new IndexTypeFilter();
    		indexTypeFilter.setUrl(relativizeUrl);
    		boolean indexFlag=indexTypeFilter.filter();
    	    newRelativizeUrl=StringClass.getPreString(relativizeUrl,"/");
    		if(newRelativizeUrl.equalsIgnoreCase(relativizeUrl)){
    			newRelativizeUrl="";
    		}else{
    			newRelativizeUrl=StringClass.getFormatPath(newRelativizeUrl+"/");
    		}
    		if(indexFlag){
    			filename="index";
    		}else{
        		int filenamelength=32;
        		try{
        			filenamelength=Integer.parseInt(commonObject.getConfigInfo(Common.CONFIGFILE_NODE_FILENAMELENGTH));
        		}catch(Exception e){
        			
        		}
        		filename=RandomSeed.getSeed(filenamelength);
    		}
    		newRelativizeUrl=newRelativizeUrl+filename+Common.DEFAULT_STATICFILETYPE;
    		newRelativizeUrl=StringClass.getFormatPath(newRelativizeUrl);

			tempLink.addLink(relativizeUrl,newRelativizeUrl);
			
		}
    	if(!pageFlagString.equals("")){
    		newRelativizeUrl=newRelativizeUrl+"#"+pageFlagString;
    	}
		return newRelativizeUrl;
	}
    
	/**
	 * 返回重新生成后的相对于parentUrl的URL
	 * @param url
	 * @param parentUrl
	 * @return String
	 */
    public String buildLocalHtmlRelativizeWithParentFileName(String url,String parentUrl){
    	String pageFlagString=StringClass.getLastString(url,"#");
    	url=StringClass.getPreString(url,"#");
    	if(url.equals("")){
    		url=StringClass.getLastString(parentUrl,"/");
    		url=StringClass.getPreString(url,"#");
    	}
    	String relativizeUrl=buildRelativizeWithParentUrl(url,parentUrl);
    	String relativizeWithWebsiteUrl=buildRelativizeUrl(url,parentUrl);
    	String newRelativizeUrl="";
    	String temprelativizeUrl=tempLink.getLink(relativizeWithWebsiteUrl);
    	if(temprelativizeUrl!=null){
    		temprelativizeUrl=StringClass.getLastString(temprelativizeUrl,"/");
    		String newurl=StringClass.getPreString(relativizeUrl,"/");
    		if(newurl.equals(relativizeUrl)){
    			newurl=temprelativizeUrl;
    		}else{
    			newurl=newurl+"/"+temprelativizeUrl;
    		}
        	relativizeUrl = StringClass.getFormatPath(newurl);
        	

        	if(!pageFlagString.equals("")){
        		relativizeUrl=relativizeUrl+"#"+pageFlagString;
        	}
        	
        	return relativizeUrl;
    	}else{
    		String filename="";
    		IRegexFilter indexTypeFilter=new IndexTypeFilter();
    		indexTypeFilter.setUrl(relativizeUrl);
    		boolean indexFlag=indexTypeFilter.filter();
    		newRelativizeUrl=StringClass.getPreString(relativizeUrl,"/");
    		if(newRelativizeUrl.equalsIgnoreCase(relativizeUrl)){
    			newRelativizeUrl="";
    		}else{
    			newRelativizeUrl=StringClass.getFormatPath(newRelativizeUrl+"/");
    		}
    		if(indexFlag){
    			filename="index";
    		}else{
        		int filenamelength=32;
        		try{
        			filenamelength=Integer.parseInt(commonObject.getConfigInfo(Common.CONFIGFILE_NODE_FILENAMELENGTH));
        		}catch(Exception e){
        			
        		}
        		filename=RandomSeed.getSeed(filenamelength);
    		}
    		newRelativizeUrl=newRelativizeUrl+filename+Common.DEFAULT_STATICFILETYPE;
    		newRelativizeUrl=StringClass.getFormatPath(newRelativizeUrl);
    		
    		buildLocalHtmlRelativizeFileName(url,parentUrl);
    		
    		String theNewRelativizeUrl=buildRelativizeUrl(newRelativizeUrl,parentUrl);
    		
    		tempLink.addLink(relativizeWithWebsiteUrl,theNewRelativizeUrl);
    	}
    	
    	if(!pageFlagString.equals("")){
    		newRelativizeUrl=newRelativizeUrl+"#"+pageFlagString;
    	}
    	
		return newRelativizeUrl;
	}
	
    /**
     * 生成HTML文件的本地绝对文件路径
     * @param url
     * @param parentUrl
     * @return String
     */
    public String buildLocalHtmlResolvedFileName(String url,String parentUrl){
    	String resolvedFileName=getFileRootPath()+"/"+buildLocalHtmlRelativizeFileName(url,parentUrl);
    	resolvedFileName=StringClass.getFormatPath(resolvedFileName);
		return resolvedFileName;
	}
	
    
    /**
     * 生成二进制文件的本地相对文件路径
     * @param url
     * @param parentUrl
     * @return String
     */
    public String buildLocalBinFileRelativizeName(String url,String parentUrl){
    	IRegexFilter remoteUrlFilter=new RemoteUrlFilter();
    	remoteUrlFilter.setUrl(url);
    	String relativizeUrl="";
    	if(!remoteUrlFilter.filter()){
    		relativizeUrl=buildRelativizeUrl(url,parentUrl);
    	}else{
    		String binfile=StringClass.getLastString(url,"/");
    		relativizeUrl=StringClass.getFormatPath("/"+Common.REMOTE_DOWNLOADFILE_SAVE_PATH+"/"+commonObject.getConfigInfo(Common.CONFIGFILE_NODE_WEBSITENAME)+"/"+binfile);
    	}
    	buildRelativizeUrl(url,parentUrl);
		return relativizeUrl;
	}

    /**
     * 生成二进制文件的本地相对文件路径
     * @param url
     * @param parentUrl
     * @return String
     */
    public String buildLocalBinFileRelativizeWithParentName(String url,String parentUrl){
    	IRegexFilter remoteUrlFilter=new RemoteUrlFilter();
    	remoteUrlFilter.setUrl(url);
    	String relativizeUrl="";
    	if(!remoteUrlFilter.filter()){
    		relativizeUrl=buildRelativizeWithParentUrl(url,parentUrl);
    	}else{
    		String binfile=StringClass.getLastString(url,"/");
    		relativizeUrl=StringClass.getFormatPath("/"+Common.REMOTE_DOWNLOADFILE_SAVE_PATH+"/"+commonObject.getConfigInfo(Common.CONFIGFILE_NODE_WEBSITENAME)+"/"+binfile);
    	}
    	buildRelativizeUrl(url,parentUrl);
		return relativizeUrl;
	}
	
    
    /**
     * 生成二进制文件的本地绝对文件路径
     * @param url
     * @param parentUrl
     * @return String
     */
    public String buildLocalBinFileResolvedName(String url,String parentUrl){
    	String resolvedFileName=getFileRootPath()+"/"+buildLocalBinFileRelativizeName(url,parentUrl);
    	resolvedFileName=StringClass.getFormatPath(resolvedFileName);
		return resolvedFileName;
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -