Как я могу получить поддомен в сервлете? Есть ли у весны помощники - PullRequest
5 голосов
/ 22 марта 2012

Сначала я хочу узнать, есть ли встроенный способ получения субдомена из URL-адреса с использованием чистых сервлетов?

А потом, если у весны есть помощники?

Так что мои URL будут выглядеть так:

jonskeet.stackoverflow.com

Где JonSkeet - поддомен.

Я создам фильтр, который будет загружать объект на основе значения субдомена.

Кстати, при создании фильтра есть ли способ заказать фильтры, чтобы убедиться, что все они работают в определенном порядке?

Ответы [ 2 ]

7 голосов
/ 22 марта 2012

Я сомневаюсь, что для этого есть специальный API.Но вы можете получить его из HttpRequest, используя request.getServerName().split("\\.")[0].Кажется, это достаточно просто.

Ограничение: вы не можете поддерживать «поддомен», содержащий символы точки, например, jon.skeet.stackoverflow.com.

1 голос
/ 01 июня 2016

Используйте гуаву.

Gradle:

dependencies {
 compile group: 'com.google.guava', name: 'guava', version: '19.0'
 ...
}

Java:

    private String getSubdomain(HttpServletRequest req) {

        String site = req.getServerName();

        String domain = InternetDomainName.from(site).topPrivateDomain().toString();
        String subDomain = site.replaceAll(domain, "");
        subDomain = subDomain.substring(0, subDomain.length() - 1);

        return subDomain;
}

Итак, "jon.skeet.stackoverflow.com" вернет "jon.skeet".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...