我创建了一个应用程序,它需要接受通配符dns并使用该通配符值向数据库请求。我试图为自己模拟一个虚拟环境来实现我想要的东西:
1)在我的Linux操作系统中,我更改了/ etc / hosts并添加以下行:
127.0.0.1 test-domain.com
127.0.0.1 mehdi.test-domain.com
2)我更改了我的tomcat server.xml文件,如下所示:
<Host name="test-domain.com"
appBase="webapps/ROOT"
unpackWARs="true"
autoDeploy="true"
xmlValidation="false"
xmlNamespaceAware="false">
<Alias>www.test-domain.com</Alias>
<Context path="" docBase="."/>
</Host>
<Host name="*.test-domain.com"
appBase="webapps/ROOT"
unpackWARs="true"
autoDeploy="true"
xmlValidation="false"
xmlNamespaceAware="false">
<Alias>*.test-domain.com</Alias>
<Context path="" docBase="."/>
</Host>
3)我将项目war文件'Root.war'部署到$ {TOMCAT} / webapps / ROOT文件夹
现在当我请求“ www.test-domain.com ”时,我看到了网页主页,当我输入此网址时,我想要“ mehdi .test-domain.com “,我从URL中获取mehdi并使用它执行某些操作并向我的用户显示mehdi页面。
问题1:如何在应用程序中获取通配符值?
问题2:我们是否有可能让tomcat在运行时将请求URL转换为其他内容并将其传递给应用程序(我需要通配符值ex:mehdi)?
问题3:是否可以只有第二个&lt;主机名= ... 定义并删除第一个?我怎么能在我的应用程序中处理它?</ p>
答案 0 :(得分:1)
Q1:使用request.getServerName()
Q2:您可以使用UrlRewrite过滤器或类似的
问题3:不支持AFAIK通配符,因此您需要单个主机名=&#34; localhost&#34;这将收到所有请求 另请参阅How to host random or wildcard subdomains on Tomcat and Java