如何从URL检索查询字符串并重新创建完整的URL

时间:2013-06-25 18:24:46

标签: java http url servlets

我知道查询字符串是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 =新网址(urlString);

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

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

bool ? A : B 

相同
if (bool) A
else B

在你的情况下:

urlString += (queryString == null ? "" : "?") + queryString; 
仅当queryString不等于urlString时,

才会将queryString附加到null(否则会附加“{”}。

答案 2 :(得分:0)

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

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

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

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