我是JSP,Servlet和Tomcat的新手。如果我將多個域指向服務器的IP地址,有沒有一種方法可以根據請求的域來以編程方式調用相關的Servlet?java - 根據url請求調用特定的servlet?
也許有什麼我可以在web.xml中做的?
對不起,我的知識的缺乏 - 我剛起步:(
我是JSP,Servlet和Tomcat的新手。如果我將多個域指向服務器的IP地址,有沒有一種方法可以根據請求的域來以編程方式調用相關的Servlet?java - 根據url請求調用特定的servlet?
也許有什麼我可以在web.xml中做的?
對不起,我的知識的缺乏 - 我剛起步:(
HTTP主機頭會告訴你客戶端請求了哪個域。
通過Servlet API中獲得這一問題的方法是:
javax.servlet.http.HttpServletRequest.getHeader("host");
哦,很酷,所以我只是設置了一個默認的servlet,然後在Servlet的doGet/doPost中處理域名? (然後可以假設地將響應轉發到特定網站的Servlet /主JSP頁面?) – user965369
這會起作用。如果每個站點都有它自己的servlet(可以打包在單獨的WAR中),那麼虛擬主機也是一個選項。 –
另外,這是一種在一臺tomcat服務器上託管多個域及其相關站點的實用方法嗎? – user965369
使用類似:
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
}
OP需要主機標頭,而不是客戶端IP地址。 –
如果您正在尋找有相同的Web應用程序到多個域響應,您可能看起來有一個調度程序servlet或調度程序過濾器,像Struts 2和Spring MVC這樣的框架使用這些概念來將請求路由到合適的servlet。使用調度程序servlet,你可以使用任何你想要的條件(在你的情況下,主機名)到合適的servlet。
如果您希望將分開, Web應用程序會響應不同的主機名和/或IP地址(通常稱爲虛擬主機),那麼您可能需要查看Tomcat virtual hosting。這通常也可以通過在Tomcat之前放置像Apache或IIS這樣的Web服務器來處理。
重定向使用 「的RequestDispatcher」
請詳細說明你的問題的請求發送到正確的servlet。 –
請參閱http://docs.oracle.com/javaee/1.3/api/javax/servlet/ServletRequest.html –