Jakarta ee 根据子域/域名更改索引页

Jakarta ee 根据子域/域名更改索引页,jakarta-ee,struts,project-planning,Jakarta Ee,Struts,Project Planning,问题和我的想法只是含糊不清,因为我还在设计阶段。我只是想知道一些事情,以便在这个问题上领先一步,以及如何/在哪里着手解决它 问题部分: 有一个web应用程序是使用struts-2JSP/servlet构建的,URLmywebapp.com。 要求是每个客户都可以使用其子域访问此mywebapp.com,如webapp.abc.com、myapp.xyz.com、等。我必须根据域名进行筛选,为他们提供一个自定义的登录页面。我已将他们的域名保存在数据库中,以映射他们需要在自定义登录页面上显示的详细信

问题和我的想法只是含糊不清,因为我还在设计阶段。我只是想知道一些事情,以便在这个问题上领先一步,以及如何/在哪里着手解决它

问题部分:

有一个web应用程序是使用struts-2JSP/servlet构建的,URL
mywebapp.com
。 要求是每个客户都可以使用其子域访问此
mywebapp.com
,如
webapp.abc.com、
myapp.xyz.com、
等。我必须根据域名进行筛选,为他们提供一个自定义的登录页面。我已将他们的域名保存在数据库中,以映射他们需要在自定义登录页面上显示的详细信息

我的想法是,他们会将
mywebapp.com
的IP地址提供给他们的子域注册表,这样它就会登录到
mywebapp.com,
,但是从这里,我如何过滤域/子域以获得自定义的登录页面


任何可能的方法都将不胜感激。

我建议使用过滤器。使用过滤器,您可以独立于控制器处理对应用程序的任何请求

例如,如果您希望基于子域重定向到不同的页面,则您的筛选器可以管理该页面,可以作为在控制器调用之前或控制器调用之后处理的筛选器

更新:有更多关于Struts 2拦截器的文档,可以用于类似的目的:


如果从数组的末尾开始,您知道倒数第二个始终是第二级域(SLD),倒数第三个始终是第三级子域所在的位置。

谢谢您的回答。是的,我考虑过拦截器,但是在过滤域名的书中找不到任何例子。如果您碰巧知道,请提供一个代码片段或类似示例的任何链接。request.getRequestURL()将解决我在拦截器或筛选器中的问题。我将检查它,因为我还没有该设置。谢谢。@rain-我添加了一些代码来帮助您开始域/子域提取。我假设您可以根据子域/域值本身处理if分支:)
 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];
     }
 }