【问题标题】:How to retrieve Query string from URL and recreate the complete URL如何从 URL 中检索查询字符串并重新创建完整的 URL
【发布时间】:2013-06-22 16:33:11
【问题描述】:

我知道查询字符串是 URL 的一部分,后跟“?”分离字符。 我正在浏览一个示例代码。我不明白这行代码的目的 -

String urlString = request.getRequestURL().toString();
String queryString = request.getQueryString();

urlString += queryString == null ? "" : "?" + queryString; 
// HOWS DOES THIS APPEND THE URL AND QUERY TO GENERATE URL. AND WHAT IS IT COMPARING TO NULL?

URL url = 新 URL(urlString);

【问题讨论】:

    标签: java http url servlets


    【解决方案1】:

    它是 java 三元运算符(有时称为 elvis 运算符?:)。语义如下:

    bool ? A : B 
    

    一样
    if (bool) A
    else B
    

    在你的情况下:

    urlString += (queryString == null ? "" : "?") + queryString; 
    

    仅当queryString 不等于null 时才会将queryString 附加到urlString(否则将附加“”)。

    【讨论】:

      【解决方案2】:

      查询字符串可能不存在(即 null),在这种情况下,代码注意不附加“?”。重新格式化:

      urlString += (  (queryString == null) ? " " : ("?"+queryString)  );
      

      【讨论】:

      • 如果 queryString 被盲目附加而没有检查是否为空,它将附加一个字符串文字“null”。
      【解决方案3】:

      我猜你不知道三元运算符,即(if) ? (then) : (else)

      在你的情况下if (queryString != null) then ("") else ("?" + queryString)

      问题中的代码也缺少括号,因为它应该是这样的:

      urlString += queryString == null ? "" : ("?" + queryString); 
      

      【讨论】:

      • 谢谢。这很有帮助。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-05
      • 2021-07-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多