我想知道以下两种在servlet中获取请求URL的方法之间的区别。

方法1:

String url = request.getRequestURL().toString();

方法2:
url = request.getScheme()
      + "://"
      + request.getServerName()
      + ":"
      + request.getServerPort()
      + request.getRequestURI();

上述两种方法是否有可能提供两个不同的URL?

最佳答案

当方案为getRequestURL()时, http 省略端口,当方案为https时,为443,则省略端口。

因此,如果您只想获取整个URL,则只需使用getRequestURL()。但是,这不包括GET查询字符串。您可能要按以下方式构造它:

StringBuffer requestURL = request.getRequestURL();
if (request.getQueryString() != null) {
    requestURL.append("?").append(request.getQueryString());
}
String completeURL = requestURL.toString();

09-26 11:52