私は JSP、サーブレット、および Tomcat を初めて使用します。サーバーの IP アドレスに複数のドメインを指定する場合、要求されたドメインに基づいて、関連するサーブレットをプログラムで呼び出す方法はありますか?
たぶん、web.xmlでできることはありますか?
知識不足で申し訳ありません-始めたばかりです:(
HTTP ホスト ヘッダーは、クライアントが要求したドメインを示します。
サーブレット API を介してこれを取得する方法は次のとおりです。
javax.servlet.http.HttpServletRequest.getHeader("host");
同じWebアプリケーションが複数のドメインに応答するようにしたい場合は、ディスパッチャーサーブレットまたはディスパッチャーフィルターを使用することを検討してください。Struts2やSpringMVCなどのフレームワークは、これらの概念を使用して、リクエストを適切なサーブレットにルーティングします。ディスパッチャサーブレットを使用すると、任意の条件(この場合はホスト名)を使用して、適切なサーブレットにルーティングできます。
代わりに、別々のWebアプリケーションが異なるホスト名やIPアドレス(一般に仮想ホスティングと呼ばれる)に応答するようにしたい場合は、Tomcat仮想ホスティングを検討することをお勧めします。これは通常、ApacheやIISなどのWebサーバーをTomcatの前に置くことによっても処理されます。
「RequestDispatcher」を使用して、リクエストを正しいサーブレットにリダイレクトします
次のようなものを使用します。
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
}