2012-10-29 39 views
1

我正在進行的項目有多個實例(即不同的網站)在單一代碼庫中運行。根據我們顯示相應網站的網址。如何獲得像http://www.europewebsite.co.uk這樣的URL的服務器的主機名?

例如,如果我們顯示美國網站http://www.uswebsite.com/。並且如果http://www.cawebsite.com/將顯示加拿大網站。寫入到檢測這個代碼是

import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 

String server` = httpRequest.getServerName(); 

如果請求來自於http://www.uswebsite.com/然後根據上面的代碼String server = uswebsite所以我們寫彈出相應的網站

現在我們正計劃包括額外的代碼在相同的代碼庫中的歐洲實例,我看到歐洲站點的URL將會是這樣的http://www.europewebsite.co.uk/。如果使用getServer(),它將獲取String server=europewebsite。通過讓.co.uk在最後將上述代碼仍然得到String server=europewebsiteString server=europewebsite.co請指教,因爲我無法在我的本地測試它。

回答

2

您的問題的措辭相當混亂,所以我假設您只是想從分層URL字符串中提取主機名。

最可靠的方法是爲url字符串構造一個java.net.URLjava.net.URI的實例,並使用相關的getter來提取主機名。


在另一方面,如果你想檢測虛擬主機在一個servlet的當前請求,那麼你httpRequest.getServerName()爲您提供了主機名,因爲它出現在HTTP請求的第一行(除非有已經重寫了它......)。


在另一方面,如果你只是想從像"www.europewebsite.co.uk" DNS名稱提取"europewebsite",沒有通用的解決方案。我建議將DNS轉換爲全部小寫字母,然後在表格中進行查找,您已經預先初始化了所有您準備識別的變體。

0

正常情況下,httpRequest.getServerName()將返回主機名,在你的情況下它是完整的名稱即。 「europewebsite.co.uk」。

+0

不適用於'HttpRequestBase' –

相關問題