在servlet中获取请求URL

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

方法1:

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

方法2:

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

上述两种方法有没有可能给出两个不同的URL?

当scheme为httpgetRequestURL()省略端口,当scheme为https时,端口为443。

所以,只要使用getRequestURL()就可以获得整个URL。 但是,这不包括GET查询string。 你可能想要如下构造它:

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