我正在尝试从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();
}
}
答案 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.
}