Upload page content

You can upload content for the page named below. If you change the page name, you can also upload content for another page. If the page name is empty, we derive the page name from the file name.

File to load page content from
Page name
Comment

Locked History Actions

guice/Manual/Integration/WebandServlets/ServletRegexKeyMapping

正規表現

正規表現を使って、サーブレット(あるいはフィルター)をURLにマップすることもできる。

    serveRegex("(.)*ajax(.)*").with(MyAjaxServlet.class)

これを使うと"ajax"というテキストを含むいかなるURIもMyAjaxServletにマップできる、次のような

初期化パラメータ

web.xml上で<init-param>タグを使うことにより、サーブレット(とフィルタ)に文字列値を渡すことができる。 GuiceサーブレットはこれをMap<String, String>という名前/値ペアでサポートしている。 例えば、MyServletを二つのパラメータcoffee="Espresso"とsite="google.com"で初期化するならこう書く。

  Map<String, String> params = new HashMap<String, String>();
  params.put("coffee", "Espresso");
  params.put("site", "google.com");

  ...
      serve("/*").with(MyServlet.class, params)

MyServletに渡されるServletConfigオブジェクトは適切な入力パラメータが含まれ、getInitParams()で取得することができる。同様のシンタックスがフィルタにもある。

バインディングキー

クラスではなく、キーをバインドすることもできる。 これによりパッケージローカルな可視性の実装を隠し、Guiceモジュールとアノテーションによってだけ使えるように公開することができる。

      filter("/*").through(Key.get(Filter.class, Fave.class));

Filter.classとは、サーブレットAPIであるjavax.servlet.Filterであり、Fave.classとはカスタムバインディングアノテーションである。他のどこかで(あなた自身のモジュールの一つの中で)このフィルタを実装にバインドすることができる。

   bind(Filter.class).annotatedWith(Fave.class).to(MyFilterImpl.class);

バインディングアノテーションについてはユーザガイドを参照のこと

インジェクタの注入

ServletModuleを使うことにより、インジェクトされたサーブレットあるいはフィルタを取得したら、 あなた自身のクラスに直接それを注入することにより、いつでもインジェクタにアクセスできる。

@Singleton
public class MyServlet extends HttpServlet {
  @Inject private Injector injector;
  ...
}

// elsewhere in ServletModule
serve("/myurl").with(MyServlet.class);

これは、インジェクタそれ自体を使う必要のあるサードパーティ製フレームワークに統合するのに便利である。