2011-01-24 15 views
2

私はまだ設計段階にあるので、問題と私の考えはあいまいです。私はちょうど問題を頭角出しするための何かを知りたいと思っていました。サブドメイン/ドメイン名に基づくインデックスページの変更

問題パート:

ストラット-2 JSP /サーブレットを使用して構築された一つのウェブアプリはURL mywebapp.comと、あります。 すべてのクライアントは、webapp.abc.com,myapp.xyz.com,などのサブドメインを使用してこのmywebapp.comにアクセスできます。ドメイン名に基づいてフィルタを適用して、カスタマイズされたログインページを提供する必要があります。データベースにドメイン名を保存して、カスタマイズされたログインページに表示する必要がある詳細をマップしました。

mywebapp.comというIPアドレスはサブドメインレジストリに割り当てられますので、mywebapp.com,に着信しますが、カスタマイズされたログインページのドメイン/サブドメインをフィルタするにはどうすればよいですか?

これを開始する方法はあります。

答えて

2

フィルターを使用することをお勧めします。フィルターを使用すると、コントローラーとは独立したアプリケーションへの要求を処理できます。

たとえば、サブドメインに基づいて別のページにリダイレクトする場合は、コントローラがコントローラコールの前に処理するフィルタまたはコントローラコールの後にフィルタを管理することができます。

UPDATE:同様の目的を果たすことができるのStruts 2つのインターセプター、上の多くのドキュメントがあります:あなたは、配列の末尾から開始した場合、あなたは最後まで第二があることを知っているhttp://java.dzone.com/articles/struts2-tutorial-part-57

String domain = ""; 
String subdomain = ""; 

String url = request.getRequestURL(); 
String[] parts = url.split("."); 

// subdomain.domain.com 0, 1, 2 
// subdomain1.subdomain2.domain.com 0, 1, 2, 3 
domain = (parts.length - 2 > -1) ? parts[1] : parts[]; 

for(int i = parts.length - 1; i >= 0; i--) { 
    if(i == parts.length - 2) { 
     domain = parts[i]; 
    } 
    if(i == parts.length - 3) { 
     subdomain = parts[i]; 
    } 
} 

は、常に第2レベルのドメイン(SLD)であり、最後から3番目のドメインは第3レベルのサブドメインになります。

+0

答えをありがとう。はい、私は傍受者を考慮しましたが、ドメイン名をフィルタリングすることについての本でも例は見つかりませんでした。あなたが知っていることが起こった場合は、コードスニペットまたは類似の例のリンクを与えてください。 – rain

+0

request.getRequestURL()はインターセプタまたはフィルタの問題を解決しますが、私はその設定がまだありませんので、チェックするつもりです。 – rain

+0

@rain - ドメイン/サブドメイン抽出を開始するためのコードをいくつか追加しました。私はあなたがサブドメイン/ドメインの値自体に基づいて分岐を処理することができると仮定します:) – jmort253

関連する問題