2012-05-10 26 views
0

我是JSP,Servlet和Tomcat的新手。如果我將多個域指向服務器的IP地址,有沒有一種方法可以根據請求的域來以編程方式調用相關的Servlet?java - 根據url請求調用特定的servlet?

也許有什麼我可以在web.xml中做的?

對不起,我的知識的缺乏 - 我剛起步:(

+0

請詳細說明你的問題的請求發送到正確的servlet。 –

+0

請參閱http://docs.oracle.com/javaee/1.3/api/javax/servlet/ServletRequest.html –

回答

2

HTTP主機頭會告訴你客戶端請求了哪個域。

通過Servlet API中獲得這一問題的方法是:

javax.servlet.http.HttpServletRequest.getHeader("host"); 
+0

哦,很酷,所以我只是設置了一個默認的servlet,然後在Servlet的doGet/doPost中處理域名? (然後可以假設地將響應轉發到特定網站的Servlet /主JSP頁面?) – user965369

+0

這會起作用。如果每個站點都有它自己的servlet(可以打包在單獨的WAR中),那麼虛擬主機也是一個選項。 –

+1

另外,這是一種在一臺tomcat服務器上託管多個域及其相關站點的實用方法嗎? – user965369

-2

使用類似:

public void doGet(HttpServletRequest req, HttpServletResponse resp) 
throws IOException { 

     // Get client's IP address 
     String ipAddress = req.getRemoteAddr(); // ip 

     // Get client's hostname 
     String hostname = req.getRemoteHost(); // hostname 
    } 
+1

OP需要主機標頭,而不是客戶端IP地址。 –

1

如果您正在尋找有相同的Web應用程序到多個域響應,您可能看起來有一個調度程序servlet或調度程序過濾器,像Struts 2和Spring MVC這樣的框架使用這些概念來將請求路由到合適的servlet。使用調度程序servlet,你可以使用任何你想要的條件(在你的情況下,主機名)到合適的servlet。

如果您希望將分開, Web應用程序會響應不同的主機名和/或IP地址(通常稱爲虛擬主機),那麼您可能需要查看Tomcat virtual hosting。這通常也可以通過在Tomcat之前放置像Apache或IIS這樣的Web服務器來處理。

1

重定向使用 「的RequestDispatcher」