0

Google Guice を使用して、静的コンテンツを除くすべてのサーバー リクエスト (/*) をサーブレット ファイルに送信したいと考えています。必要に応じて、静的コンテンツを /static フォルダーに配置することも得意です。ルートへのサーブレット リクエストを取得する必要があるだけです。

動作するコードは次のとおりです。

//Holds @GET @POST, etc
bind(MyTemplateResource1.class);
bind(MyTemplateResource2.class);

// this serves MyTemplateResource1..2... and any other servlet files
serve("/server/*").with(GuiceContainer.class); 

// this serves the static content
serveRegex("/(images|css|html)/.*").with(GuiceContainer.class); 

ただし、/server を取り出すと、静的コンテンツも MyTemplateResource にルーティングされます。例えば:

serve("/*").with(GuiceContainer.class); 

サーブレットの URL がルートから開始できる場合でも、サーブレットのコンテンツを 1 つ以上のリソース ファイルにルーティングしながら、すべての静的コンテンツが自由に流れるようにする最善の方法は何ですか?

4

1 に答える 1

0

私は同様の問題を抱えていました(私は実際に正規表現マスクを探していて、あなたの質問を見つけました)、基本的に:

  1. パラメータのマップを作成する
  2. WebPageContentRegex の参照を追加し、静的ファイル regexps を追加します
  3. サーブの代わりにフィルターを使用し、マップを渡すようにしてください

コードでは、次のように機能します。

    bind(HostController.class, LoginController.class, ConfirmInviteController.class, LogoutController.class, ResetPasswordController.class, ChangePasswordController.class);

    Map<String, String> initParams = new TreeMap<String, String>();

    initParams.put("com.sun.jersey.config.property.WebPageContentRegex", "/.*\\.(jpg|ico|png|gif|html|id|txt|css|js)");

    filter("/*").through(GuiceContainer.class, initParams);

それが役立つことを願っています

于 2013-02-04T17:14:06.620 に答える