我已经写好了,您可以在需要附加功能的地方进行更改。它不使用任何外部资源,如果我看过东西,请告诉我!
它基本上是
URI该类的包装器,使您可以更轻松地将子目录和参数添加到URI。如果您对某些内容不感兴趣,则可以设置默认值。
编辑:我添加了一个使用相对URI的选项(根据您的问题)。
public class Test { public static void main(String[] args) throws URISyntaxException, MalformedURLException { URLBuilder urlb = new URLBuilder("www.example.com"); urlb.setConnectionType("http"); urlb.addSubfolder("somesub"); urlb.addSubfolder("anothersub"); urlb.addParameter("param lol", "unknown"); urlb.addParameter("paramY", "known"); String url = urlb.getURL(); System.out.println(url); urlb = new URLBuilder(); urlb.addSubfolder("servlet"); urlb.addSubfolder("jsp"); urlb.addSubfolder("somesub"); urlb.addSubfolder("anothersub"); urlb.addParameter("param lol", "unknown"); urlb.addParameter("paramY", "known"); String relUrl = urlb.getRelativeURL(); System.out.println(relUrl); }}class URLBuilder { private StringBuilder folders, params; private String connType, host; void setConnectionType(String conn) { connType = conn; } URLBuilder(){ folders = new StringBuilder(); params = new StringBuilder(); } URLBuilder(String host) { this(); this.host = host; } void addSubfolder(String folder) { folders.append("/"); folders.append(folder); } void addParameter(String parameter, String value) { if(params.toString().length() > 0){params.append("&");} params.append(parameter); params.append("="); params.append(value); } String getURL() throws URISyntaxException, MalformedURLException { URI uri = new URI(connType, host, folders.toString(), params.toString(), null); return uri.toURL().toString(); } String getRelativeURL() throws URISyntaxException, MalformedURLException{ URI uri = new URI(null, null, folders.toString(), params.toString(), null); return uri.toString(); }}
输出:
绝对
http://www.example.com/somesub/anothersub?param%20lol=unknown¶mY=known
相对的
/ servlet / jsp / somesub / anothersub?param%20lol = unknown&paramY =已知
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)