2013-02-26 141 views
1

我有一个Java Servlet容器。该servlet容器可以服务于localhost:8080,192.168.1.2:8080www.development.examplewww.production.example.com。我怎样才能有Servlet容器和/或任何正在运行的servlet sense它正在为哪个域名服务?如何让服务器知道它所服务的域名?

+0

你问知道 “父” 页面是什么?如何包含servlet?关于ServletRequest的 – Floris 2013-02-26 23:05:06

+0

[getLocalName](http://docs.oracle.com/javaee/6/api/javax/servlet/ServletRequest.html#getLocalName%28%29)应该给你你想要的。 – BevynQ 2013-02-26 23:11:48

+3

@BevynQ - 将返回运行应用程序的机器的主机名,可能与虚拟主机名不同。 [getServerName()](http://docs.oracle.com/javaee/6/api/javax/servlet/ServletRequest.html#getServerName())是一个更好的选择。 – Perception 2013-02-26 23:14:48

回答

2

该servlet应该能够看到整个请求URL:

方法1:获取请求的URL和自己解析它。

String url = request.getRequestURL().toString(); 

方法2:

String server = request.getServerName() 

this答案

1

for Servlets,在request对象上使用getServerName()方法。

就servlet容器而言,如果将apache放在容器的前面,可以用VHosts做一些调整。你将不得不看看你的特定的servlet容器的文档,看看他们的HTTP服务器是否支持这个级别的VHosts。