0

我正在尝试从 HttpServletRequest 对象获取完整的 URL。我有各种各样的方法。其中一种方法是将 requestURL 与 queryString 结合起来。我的情况是有一个?最后没有查询参数。如何确定我的 URL 有一个 ? 在最后。

URL 类似于:http ://www.xyz.com/path/id ?

我需要考虑吗?作为 id 的一部分。(客户要求:))

我正在尝试的代码是:

public static String getFullURL(HttpServletRequest request) {
StringBuffer requestURL = request.getRequestURL();
String queryString = request.getQueryString();

if (queryString == null) {
    return requestURL.toString();
} else {
    return requestURL.append('?').append(queryString).toString();
}
}
4

2 回答 2

0

我相信您正在寻找的区别是:

当 url 没有问号时,request.getQueryString()结果将是null.

当 url 以问号结尾但没有查询字符串时,request.getQueryString()结果将为空字符串或"".

因此,您应该能够像这样检查:

String queryString = request.getQueryString();
if (queryString == null) {
    // There was no question mark. React accordingly.
} else if ("".equals(queryString)) {
    // The URL ended with a question mark and had no query parameters. React accordingly.
} else {
    // The URL ended with a question mark AND parameters. React accordingly.
}
于 2013-11-01T00:12:49.833 回答
0

在这种情况下它不会增加额外的?最后,如果返回 queryString 为 null 或为空。

if (queryString != null && !queryString.trim().equals("")) {
  return requestURL.append('?').append(queryString).toString();    
} else {
  return requestURL.toString();    
}

如何确定我的 URL 有一个 ? 在最后。为此,您可以检查

 if (queryString == null || queryString.trim().equals("")) {
   In this case just check requestUrl last char. //String data = requestUrl.substring(0, requestUrl.length-1);
   check data has "?"
 }
于 2013-07-18T19:08:35.463 回答