java中如何从URL字符串获取路径参数

java中如何从URL字符串获取路径参数,java,jersey-2.0,Java,Jersey 2.0,我想创建一个函数,它将URL字符串作为参数并返回 MultivaluedHashMap作为输出。我随身带着url的格式,通过它我可以构造UriTemplate类 因此,基本上我想创建类似于requestContext.getUriInfo().getPathParameters() 所以我的功能是 public MultivaluedHashMap<String, String> getPathParamtersFromUrl(string url) { } public多值has

我想创建一个函数,它将URL字符串作为参数并返回
MultivaluedHashMap
作为输出。我随身带着url的格式,通过它我可以构造UriTemplate类

因此,基本上我想创建类似于
requestContext.getUriInfo().getPathParameters()

所以我的功能是

public MultivaluedHashMap<String, String> getPathParamtersFromUrl(string url)
{
}
public多值hashmap getPathParametersFromURL(字符串url)
{
}
我不知道怎样才能得到这个。
注意:我不想提取查询参数。我想提取路径参数

这将为您提供除http方案和域名之外的路径参数列表

    public static void main(String[] args) {
    String url = "http://stackoverflow.com/questions/40428388/how-to-get-path-paramters-from-url-string-in-java";
    System.out.println("The path parameters of url:" + url);
    List<String> p = getPathParamtersFromUrl(url);
    p.stream().forEach(x -> System.out.println(x));
}

private static List<String> getPathParamtersFromUrl(String url) {
    String[] path = url.split("\\?");
    String[] pathparams = path[0].split("\\//");
    String[] param = pathparams[1].split("\\/");
    List<String> p = Arrays.asList(param);
    return p.stream().filter(x -> !x.contains(".")).collect(Collectors.toList());
}
publicstaticvoidmain(字符串[]args){
字符串url=”http://stackoverflow.com/questions/40428388/how-to-get-path-paramters-from-url-string-in-java";
System.out.println(“url的路径参数:“+url”);
列表p=GetPathParametersFromUrl(url);
p、 stream().forEach(x->System.out.println(x));
}
私有静态列表GetPathParametersFromUrl(字符串url){
String[]path=url.split(“\\?”);
字符串[]路径参数=路径[0]。拆分(“\\/”;
字符串[]param=pathparams[1]。拆分(“\\/”;
List p=Arrays.asList(param);
返回p.stream().filter(x->!x.contains(“.”).collect(Collectors.toList());
}

在仔细查看UriTemplate类之后,我找到了解决方案

 private MultivaluedMap<String, String> getPathParameters(String uri, String strUrlTemplate) {

        UriTemplate template = new UriTemplate(strUrlTemplate);
        Map<String, String> parameters = new HashMap<>();
        Boolean value = template.match(uri, parameters);
        return new MultivaluedHashMap(parameters);

    } 
私有多值Map getPathParameters(字符串uri、字符串strUrlTemplate){
UriTemplate template=新的UriTemplate(strUrlTemplate);
映射参数=新的HashMap();
布尔值=template.match(uri,参数);
返回新的多值DHASHMAP(参数);
} 

编写代码的哪一部分您有问题?让我们看看你有什么,并解释哪一部分困扰你。