问题和我的想法很模糊,因为我还处于设计阶段。我只想知道一些事情,以便在问题上以及如何/在何处着手解决问题。
问题部分:
使用struts-2 JSP / servlet构建了一个Web应用程序,其URL为mywebapp.com
。
要求是每个客户都可以使用他们的子域访问此mywebapp.com
,例如webapp.abc.com,
myapp.xyz.com,
等。我必须根据域名进行过滤,以便为他们提供自定义的登录页面。我已将其域名保存在数据库中,以映射需要在自定义登录页面上显示的详细信息。
我想到的是,他们会将mywebapp.com
的IP地址提供给他们的子域名注册表,以便它可以登陆mywebapp.com,
,但是从这里开始,如何过滤域/子域以进行自定义登录网页?
任何可能的方式开始这一点将不胜感激。
答案 0 :(得分:2)
我建议使用过滤器。使用过滤器,您可以独立于控制器处理对应用程序的任何请求。
例如,如果您想基于子域重定向到其他页面,则过滤器可以将其作为在控制器调用之前或控制器调用之后处理的过滤器进行管理。
更新:有更多关于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];
}
}
如果从数组的末尾开始,您知道倒数第二个域始终是第二级域(SLD),而倒数第三个是第三级子域所在的位置。