Deletions are marked like this. | Additions are marked like this. |
Line 2: | Line 2: |
正規表現を使って、サーブレット(あるいはフィルター)をURLにマップすることもできる。 | |
Line 3: | Line 4: |
正規表現を使って、サーブレット(あるいはフィルター)をURLにマップすることもできる。 | |
Line 8: | Line 8: |
* http://www.google.com/ajax.html |
* http://www.google.com/ajax.html |
Line 10: | Line 11: |
* http://www.google.com/it/is-totally-ajaxy | * http://www.google.com/it/is-totally-ajaxy |
Line 13: | Line 14: |
web.xml上で<init-param>タグを使うことにより、サーブレット(とフィルタ)に文字列値を渡すことができる。 GuiceサーブレットはこれをMap<String, String>という名前/値ペアでサポートしている。 例えば、MyServletを二つのパラメータcoffee="Espresso"とsite="google.com"で初期化するならこう書く。 | |
Line 14: | Line 16: |
web.xml上で<init-param>タグを使うことにより、サーブレット(とフィルタ)に文字列値を渡すことができる。 GuiceサーブレットはこれをMap<String, String>という名前/値ペアでサポートしている。 例えば、MyServletを二つのパラメータcoffee="Espresso"とsite="google.com"で初期化するならこう書く。 |
|
Line 28: | Line 27: |
クラスではなく、キーをバインドすることもできる。 これによりパッケージローカルな可視性の実装を隠し、Guiceモジュールとアノテーションによってだけ使えるように公開することができる。 | |
Line 29: | Line 29: |
クラスではなく、キーをバインドすることもできる。 これによりパッケージローカルな可視性の実装を隠し、Guiceモジュールとアノテーションによってだけ使えるように公開することができる。 |
|
Line 35: | Line 33: |
Line 38: | Line 37: |
Line 42: | Line 40: |
ServletModuleを使うことにより、インジェクトされたサーブレットあるいはフィルタを取得したら、 あなた自身のクラスに直接それを注入することにより、いつでもインジェクタにアクセスできる。 | |
Line 43: | Line 42: |
ServletModuleを使うことにより、インジェクトされたサーブレットあるいはフィルタを取得したら、 あなた自身のクラスに直接それを注入することにより、いつでもインジェクタにアクセスできる。 |
正規表現
正規表現を使って、サーブレット(あるいはフィルター)を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);
これは、インジェクタそれ自体を使う必要のあるサードパーティ製フレームワークに統合するのに便利である。