2013-02-26 144 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。