== 正規表現 == 正規表現を使って、サーブレット(あるいはフィルター)をURLにマップすることもできる。 {{{ serveRegex("(.)*ajax(.)*").with(MyAjaxServlet.class) }}} これを使うと"ajax"というテキストを含むいかなるURIもMyAjaxServletにマップできる、次のような * http://www.google.com/ajax.html * http://www.google.com/content/ajax/index * http://www.google.com/it/is-totally-ajaxy == 初期化パラメータ == web.xml上でタグを使うことにより、サーブレット(とフィルタ)に文字列値を渡すことができる。 GuiceサーブレットはこれをMapという名前/値ペアでサポートしている。 例えば、MyServletを二つのパラメータcoffee="Espresso"とsite="google.com"で初期化するならこう書く。 {{{ Map params = new HashMap(); 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); }}} これは、インジェクタそれ自体を使う必要のあるサードパーティ製フレームワークに統合するのに便利である。