如果您只希望一个 web 应用程序根据原始 URL 提供不同的内容,您可以简单地使用javax.servlet.Filter
. 首先在中声明过滤器web.xml
:
<filter>
<filter-name>DomainNameFilter</filter-name>
<filter-class>com.whatever.blah.DomainNameFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>DomainNameFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
然后创建一个名为DomainNameFilter
implements的类javax.servlet.Filter
。在该doFilter()
方法中,您可以像这样获取原始 URL:
request.getServerName()
chain.doFilter(request, response);
如果您使用任何其他过滤器,请记住也致电。现在您知道了原始域名,您可以构建适当的响应。我通过在doFilter()
方法中设置特定于域的属性来做到这一点,如下所示:
request.setAttribute("title", titleMap.get(request.getServerName()));
在'方法中从数据库加载的 a 是titleMap
哪里。例如,要在 JSP 中使用该值,您可以像这样访问它:HashMap
Filter
init()
<title><%=request.getAttribute("title")%></title>
如果您想查看一个工作示例,请查看http://thermodynamiccomputing.org/和http://fnode.xeiam.com/。这两个网站实际上都是使用我刚才描述的过滤技术的完全相同的 webapp。