Ответ 1
В HttpServletRequest
вы можете получить отдельные части URI, используя приведенные ниже методы. Вы также можете использовать их для восстановления URL-адреса по частям (для помощи в отладке или других задачах), например:
// Example: http://myhost:8080/people?lastname=Fox&age=30
String uri = request.getScheme() + "://" + // "http" + "://
request.getServerName() + // "myhost"
":" + request.getServerPort() + // ":" + "8080"
request.getRequestURI() + // "/people"
(request.getQueryString() != null ? "?" +
request.getQueryString() : ""); // "?" + "lastname=Fox&age=30"
Так что request.getServerName()
является самым близким к вам.
"Корневой домен":
Для "корневого домена" вам придется работать через String
, возвращенный с getServerName()
. Это необходимо, потому что у Servlet не было бы возможности заранее знать, что вы называете "хостом" или что такое домен, например .com
(это может быть машина под названием com
в вашей сети), а не только суффикс - кто знает?).
Для полученного вами шаблона (одна треть + второй уровень + ком/сеть) следующее должно получить то, что вам нужно:
String domain = request.getServerName().replaceAll(".*\\.(?=.*\\.)", "");
Приведенные выше будут содержать следующие входы/выходы:
www.test.com -> test.com
test1.example.com -> example.com
a.b.c.d.e.f.g.com -> g.com
www.com -> www.com
com -> com