1

私が取り組んでいるプロジェクトには、複数のインスタンス (つまり、異なる Web サイト) が単一のコード ベースで実行されています。URL に基づいて、対応する Web サイトを表示します。

たとえば、http://www.uswebsite.com/米国の Web サイトを表示するとします。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() を使用すると、 fetch が実行されString server=europewebsiteます。最後に .co.uk を付けることで、上記のコードは引き続き取得されます。String server=europewebsiteまたはString server=europewebsite.co、ローカルでこれをテストできないため、アドバイスしてください。

4

2 に答える 2

2

あなたの質問の言い回しはかなり紛らわしいので、階層的なURL文字列からホスト名を抽出したいだけだと思います。

これを行う最も信頼できる方法は、URL文字列のインスタンスjava.net.URLまたはjava.net.URIURL文字列を作成し、関連するゲッターを使用してホスト名を抽出することです。


一方、サーブレットで現在のリクエストの仮想ホスト名を検出しようとしている場合httpRequest.getServerName()は、HTTPリクエストの最初の行に表示されているホスト名を提供します(何かが書き換えていない限り...)。


一方、の"europewebsite"ようなDNS名から単純に抽出したい場合"www.europewebsite.co.uk"は、一般的な解決策はありません。DNSをすべて小文字に変換し、認識できるように準備されているすべてのバリエーションを使用して事前に初期化したテーブルでルックアップを実行することをお勧めします。

于 2012-10-29T12:52:35.533 に答える
0

通常、 httpRequest.getServerName() はホスト名を返します。あなたの場合は完全な名前です。「europewebsite.co.uk」。

于 2012-10-29T12:59:43.040 に答える