在Servlet中获取请求URL

51

我想了解在servlet中获取请求URL的以下两种方法的区别。

方法1:

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

方法二:

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

以上两种方法是否有可能返回不同的URL?

1个回答

80

当使用 getRequestURL() 方法获取 URL 时,如果端口是80而协议是http,或者端口是443而协议是https,则会省略端口。

因此,如果你只想获取整个URL,那么只需使用getRequestURL()方法即可。但是这不包括GET查询字符串。你可以像下面这样构造它:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接