怎么弄?在没有查询参数的URL末尾

时间:2013-07-18 13:40:04

标签: java servlets

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

网址类似于:http://www.xyz.com/path/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();
}
}

2 个答案:

答案 0 :(得分:0)

在这种情况下,它不会添加额外的?如果返回queryString为null或为空,则返回结束。

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

如何识别我的网址有?在末尾。 为此你可以检查

 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 "?"
 }

答案 1 :(得分:0)

我相信您正在寻找的不同之处是:

当网址没有问号时,request.getQueryString()结果将为null

当网址以问号结尾但没有查询字符串时,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.
}