如果您只希望一个 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>
然后创建一个名为DomainNameFilterimplements的类javax.servlet.Filter。在该doFilter()方法中,您可以像这样获取原始 URL:
request.getServerName()
chain.doFilter(request, response);如果您使用任何其他过滤器,请记住也致电。现在您知道了原始域名,您可以构建适当的响应。我通过在doFilter()方法中设置特定于域的属性来做到这一点,如下所示:
request.setAttribute("title", titleMap.get(request.getServerName()));
在'方法中从数据库加载的 a 是titleMap哪里。例如,要在 JSP 中使用该值,您可以像这样访问它:HashMapFilterinit()
<title><%=request.getAttribute("title")%></title>
如果您想查看一个工作示例,请查看http://thermodynamiccomputing.org/和http://fnode.xeiam.com/。这两个网站实际上都是使用我刚才描述的过滤技术的完全相同的 webapp。