在servlet中获取请求URL

sel*_*vam 46 java servlets

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

方法1:

String url = request.getRequestURL().toString();
Run Code Online (Sandbox Code Playgroud)

方法2:

url = request.getScheme()
      + "://"
      + request.getServerName()
      + ":"
      + request.getServerPort()
      + request.getRequestURI();
Run Code Online (Sandbox Code Playgroud)

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

Bal*_*usC 72

getRequestURL(),当它为80,而方案是省略了端口http,或当它是443,而方案https.

所以,只要使用getRequestURL()你想要的只是获取整个URL.但这不包括GET查询字符串.您可能希望按如下方式构造它:

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