JAVA如何从URL获取所有参数,仅此而已

JAVA如何从URL获取所有参数,仅此而已,java,url,vaadin,vaadin7,Java,Url,Vaadin,Vaadin7,我想获取作为URL一部分的参数及其值: https://ga.acriss.com:8844/arranger/CTX4434001/HTML/CORE/maintain/schedule?dateFrom=2015-03-27&dateTo=2015-04-27#!schedule 参数名称是任意的,可以是零或多个。在上述情况下,我对“dateFrom”和“dateTo”感兴趣。 我发现的最接近的东西是: VaadinRequest vaadinRequest = VaadinS

我想获取作为URL一部分的参数及其值:

https://ga.acriss.com:8844/arranger/CTX4434001/HTML/CORE/maintain/schedule?dateFrom=2015-03-27&dateTo=2015-04-27#!schedule
参数名称是任意的,可以是零或多个。在上述情况下,我对“dateFrom”和“dateTo”感兴趣。 我发现的最接近的东西是:

  VaadinRequest vaadinRequest = VaadinService.getCurrentRequest();
    for(String key: vaadinRequest.getParameterMap().keySet()){
        vaadinRequest.getParameterMap().get(key); 
    }

的确,它返回了我想要的参数,但不幸的是,它还返回了许多其他东西,如
主题、v-appId、

是否有一个优雅的解决方案可以返回URL中存在的所有参数(即使我不知道它们的名称),但不提供任何不属于URL的参数?当然,我可以采取所有的东西,并消除那些不存在的网址,但我想知道是否有更好的东西

给你

public static Map<String, String> getQueryMap(String query)  
{  
    String[] params = query.split("&");  
    Map<String, String> map = new HashMap<String, String>();  
    for (String param : params)  
    {  
        String name = param.split("=")[0];  
        String value = param.split("=")[1];  
        map.put(name, value);  
    }  
    return map;  
}
公共静态映射getQueryMap(字符串查询)
{  
字符串[]params=query.split(&);
Map Map=newhashmap();
for(字符串参数:params)
{  
字符串名称=参数拆分(“=”[0];
字符串值=参数拆分(“=”[1];
map.put(名称、值);
}  
返回图;
}

“贴图关键点”具有所有参数,“贴图值”具有所有值。取回你需要的东西。在您的情况下,将键作为
map.keySet()

获取。您可以将所有参数值作为键值对获取

           for(Entry temp:vaadinRequest.getParameterMap()){
                temp.getKey();
                temp.getValue();
            }

不熟悉VaadinRequest,但文档中说框架的内部init参数有前缀“v-”

您可以有一个方法,用“v-”过滤掉键。类似(注意:未测试代码):

私有映射getQueryStringParams(映射参数映射){
地图结果;
如果(parameterMap==null | | parameterMap.size()==0)
返回null;
其他的
结果=新HashMap();
迭代器pMapKeysIt=参数map.keySet().Iterator();
while(pMapKeysIt.hasNext()){
String key=pMapKeysIt.next();
如果(!key.contains(“v-”))
结果.put(key,parameterMap.get(key));
}
返回结果;
}

它确实返回了我想要的参数,但不幸的是,它还返回了许多其他内容,如主题、v-appId等。。有没有一种优雅的解决方案,可以返回URL中存在的所有参数(即使我不知道它们的名称),但不提供任何不属于URL的参数?当然,我可以采取所有的东西,并消除那些不存在的网址,但我想知道是否有更好的东西。
private Map<String,String[]> getQueryStringParams(Map<String,String[]> parameterMap) {

    Map<String,String[]> results;

    if (parameterMap == null || parameterMap.size() == 0)
        return null;
    else
        results = new HashMap<String, String[]>();

    Iterator<String> pMapKeysIt = parameterMap.keySet().iterator();
    while (pMapKeysIt.hasNext()) {
        String key = pMapKeysIt.next();
        if (!key.contains("v-"))
            results.put(key, parameterMap.get(key));
    }

    return results;
}