Изменение страницы индекса на основе субдомена / имени домена - PullRequest
2 голосов
/ 24 января 2011

Проблема и моя идея о ней просто расплывчаты, так как я все еще на стадии разработки.Я просто хотел что-то узнать, чтобы получить представление о проблеме и как / как ее решить.

Часть проблемы:

Есть одно веб-приложение, созданное с использованием JSP / Struts-2.сервлет с URL mywebapp.com.Требование заключается в том, что каждый клиент может получить доступ к этому mywebapp.com, используя свой поддомен, например, webapp.abc.com, myapp.xyz.com, и т. Д. Я должен фильтровать по имени домена, чтобы предоставить ему настроенную страницу входа.Я сохранил их доменное имя в базе данных, чтобы отобразить их данные, которые должны отображаться на настроенной странице входа.

Я думал, что они дадут IP-адрес mywebapp.com своему реестру поддоменов, поэтому он попадет на mywebapp.com,, но как я могу отфильтровать домен / поддомен для настраиваемой страницы входа?

Любой возможный способ начать это будет оценено.

1 Ответ

2 голосов
/ 24 января 2011

Я бы предложил использовать фильтр.С помощью фильтра вы можете обрабатывать любые запросы к вашему приложению независимо от контроллеров.

Например, если вы хотите перенаправить на другую страницу, основанную на поддомене, ваш фильтр может управлять этим, либо как фильтр, которыйобрабатывает до вызова контроллера или после вызова контроллера.

ОБНОВЛЕНИЕ: Существует больше документации по перехватчикам Struts 2, которая может служить аналогичной цели: http://java.dzone.com/articles/struts2-tutorial-part-57

 String domain = "";
 String subdomain = "";

 String url = request.getRequestURL();
 String[] parts = url.split(".");

 // subdomain.domain.com  0, 1, 2
 // subdomain1.subdomain2.domain.com  0, 1, 2, 3
 domain = (parts.length - 2 > -1) ? parts[1] : parts[];

 for(int i = parts.length - 1; i >= 0; i--) {
     if(i == parts.length - 2) {
         domain = parts[i];
     }
     if(i == parts.length - 3) {
         subdomain = parts[i];
     }
 }

Если вы начинаете с конца массива, вы знаете, что 2-й до последнего всегда является доменом второго уровня (SLD), а 3-й из последних - это то, где будут субдомены третьего уровня.

...