Java: Строковое представление просто хоста, схемы, возможно порт от запроса сервлета

ME.find({pictures: {$exists: true}}) 

Просто, это работало на меня.

9
задан dfa 9 July 2009 в 15:29
поделиться

5 ответов

попробуйте следующее:

URL serverURL = new URL(request.getScheme(),      // http
                        request.getServerName(),  // host
                        request.getServerPort(),  // port
                        "");                      // file

EDIT

скрытие порта по умолчанию на http и https :

int port = request.getServerPort();

if (request.getScheme().equals("http") && port == 80) {
    port = -1;
} else if (request.getScheme().equals("https") && port == 443) {
    port = -1;
}

URL serverURL = new URL(request.getScheme(), request.getServerName(), port, "");
19
ответ дан 4 December 2019 в 09:37
поделиться

Думаю, java.net.URI делает то, что вы хотите.

0
ответ дан 4 December 2019 в 09:37
поделиться
public String getServer(HttpServletRequest request) {
  int port = request.getServerPort();
  StringBuilder result = new StringBuilder();
  result.append(request.getScheme())
        .append("://")
        .append(request.getServerName());

  if (port != 80) {
    result.append(':')
          .append(port);
  }

  return result;
}
1
ответ дан 4 December 2019 в 09:37
поделиться
URI u=new URI("http://www.google.com/");
String s=u.getScheme()+"://"+u.getHost()+":"+u.getPort();

Как сказал Cookie, из java.net.URI ( docs ).

2
ответ дан 4 December 2019 в 09:37
поделиться

Если вы хотите сохранить URL-адрес, указанный в запросе (например, отключив порт, если он не был явно указан), вы можете использовать что-то вроде этого. Регулярное выражение соответствует URL-адресам HTTP и HTTPS. Группа захвата 1 содержит корень сервера от схемы до необязательного порта. (Это тот, который вам нужен.) Группа 2 содержит только имя хоста.

String regex = "(^http[s]?://([\\w\\-_]+(?:\\.[\\w\\-_]+)*)(?:\\:[\\d]+)?).*$";
Matcher urlMatcher = Pattern.compile(regex).matcher(request.getRequestURL());
String serverRoot = urlMatcher.group(1);
0
ответ дан 4 December 2019 в 09:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: