2011-01-02 6 views
18

URLを短くする必要があるだけでなく、他のことも行うアプリケーションがあるとします。 (google.comおよびgoo.gl、またはfacebook.comおよびなど)。spring mvcを使用した複数のドメイン

2つのアプリケーションを簡単に配備することは簡単ですが、現時点では1つだけの方が簡単です。 springとspring-mvcを使用します。 headers注釈がない、より具体的な情報を与えるとして、代わりに制限として機能し

​​

ああ、私は以下のマッピングを持っています。だから、もし私がこの2つを持っていれば、私がhttp://foo.br/asdfとしてそれを開いても、後者だけが呼び出されます。前者のみを残しておけば、foo.brから来ている人のために動作し、ホストが異なる場合は何も開きません。

だから、質問:

  • は、どのように私は、同じパスに2つのハンドラを作成することができますが、別のURL /ホスト
  • は、むしろ(プロパティのプレースホルダ構成器と、動的ホストを解決することも可能です注釈でハードコードするよりも)

おそらく、メソッド解決のためのプラガブルなメカニズムがあれば両方とも機能します。そんなことはありますか?

+0

([複数のドメインとサブドメインの管理] http://technology.sravi.com/2011/05/managing-multiple-domain-and:各ドメインヘッダーマッピングを有する2つの制御方法を有することができるようounds -sub-domain.html) – Lucky

答えて

15

リクエストからホスト名を受け取り、リクエストされた元のパスに追加してリクエストに転送するサーブレットフィルタ(またはSpring HandlerInterceptor)を書くことをお勧めします。

たとえば、要求されたURLがhttp://goo.gl/my/pathの場合、フィルタは/goo.gl/my/pathに転送されます。 SpringのMVCマッピングには、何かがあります。

また、フィルタは要求されたホストを含​​むカスタムヘッダーまたは要求属性を設定できますが、それはおそらく柔軟性が低くなります。

でも、私はあなたがあなたの質問の後半部分で何を意味するかわからないんだけど

ここで働い抜粋です:あなたの説明に基づいて

@Override 
public boolean preHandle(HttpServletRequest request, 
     HttpServletResponse response, Object handler) throws Exception { 

    if (request.getRequestURL().toString().contains(shortenerDomain) 
      && !request.getRequestURI().startsWith(SHORT_URI_PREFIX)) { 

     request.getRequestDispatcher(SHORT_URI_PREFIX + request.getRequestURI()) 
       .forward(request, response); 
     return false; 
    } else { 
     return true; 
    } 
} 
+0

非常に良いアイデア:) 2番目の質問は、短いホスト名をハードコーディングするのではなく設定することでした。しかし、あなたの提案はそれを修正します(私は迎撃器に '@ Value'を注入します)。試してみてくださいし、答えを受け入れる – Bozho

+1

作品:)コードスニペットを追加しました。 (これはgetHeader( "Host")を使うことができますが、違いはありません) – Bozho

2

、それはsの

@RequestMapping(value="/{shortUrlKey}", headers="Host=foo.br") 
public void fooBr() { ... } 

@RequestMapping(value="/{shortUrlKey}", headers="Host=bar.bz") 
public void barBz() { ... } 
+0

私はそれを考えました。それはおそらく動作します(したがって+1)が、これはホストのハードコーディングを意味します。その良い:) – Bozho

+1

スプリングmvcは、注釈マッピングのプレースホルダをサポートしていますが、これはヘッダプロパティでも機能します – msangel

関連する問題