9.1.1 アプリケーションサーバが提供するサーブレットフィルタ(built-inフィルタ)
アプリケーションサーバでは,次に示す機能を使用するためのサーブレットフィルタ(built-inフィルタ)を提供しています。
-
HTTPレスポンスの圧縮
HTTPリクエストに対するHTTPレスポンスを圧縮するために,アプリケーションサーバはbuilt-inフィルタとしてHTTPレスポンス圧縮フィルタを提供しています。
built-inフィルタの種類を次の表に示します。また,Webアプリケーションにbuilt-inフィルタを組み込むことによって使用できる機能の参照先をあわせて示します。
built-inフィルタの種類 |
機能の説明 |
参照先マニュアル |
参照個所 |
---|---|---|---|
HTTPレスポンス圧縮フィルタ |
サーブレット,JSP,および静的コンテンツへのHTTPリクエストに対するHTTPレスポンスをgzip形式に圧縮します。 |
このマニュアル |
なお,Servlet 3.0以降では,web.xmlではなくAPIでのフィルタ定義ができますが,built-inフィルタはAPIでのフィルタ定義はできません。
以降で,built-inフィルタのHTTPリクエスト・HTTPレスポンスへの作用,built-inフィルタの動作条件に関する制約について説明します。
(1) HTTPリクエストおよびHTTPレスポンスへの作用
built-inフィルタは,クライアント側から送信されるHTTPリクエストのリクエストヘッダ,およびリクエストボディに対して作用して,情報の削除,追加,変更などを実施する場合があります。また,サーバから送信されるHTTPレスポンスのレスポンスヘッダ,およびレスポンスボディに対して同様に作用する場合もあります。built-inフィルタのHTTPリクエストおよびHTTPレスポンスへの作用を次の表に示します。
built-inフィルタの種類 |
HTTPリクエストへの作用 |
HTTPレスポンスへの作用 |
---|---|---|
HTTPレスポンス圧縮フィルタ |
− |
レスポンスボディが圧縮される場合,Content-Encodingヘッダに「gzip」を指定します。また,レスポンスボディをgzip形式で圧縮します。 |
(2) 動作条件に関する制約
ユーザのフィルタと,built-inフィルタを同時に使用する場合,フィルタ連鎖の中でbuilt-inフィルタが呼び出される順序に制約があります。
built-inフィルタごとに次に示す制約について説明します。
-
位置に関する制約
フィルタ連鎖中のbuilt-inフィルタの位置(呼び出される順序)に関する制約です。
-
動作条件に関する制約
built-inフィルタが動作する上での前提条件などの動作条件に関する制約です。
-
前後に配置するほかのサーブレットフィルタに対する制約
built-inフィルタの前後に配置するサーブレットフィルタに対する制約です。
(a) HTTPレスポンス圧縮フィルタに対する制約
HTTPレスポンス圧縮フィルタに対する制約を次の表に示します。
制約の種類 |
説明 |
---|---|
位置に関する制約 |
− |
動作条件に関する制約 |
− |
前後に配置するほかのサーブレットフィルタに対する制約 |
javax.servlet.http.HttpServletResponseクラスのsetHeaderメソッド,addHeaderメソッド,setIntHeaderメソッド,またはaddIntHeaderメソッドを使用して,Content-Lengthヘッダ,またはContent-Encodingヘッダの設定を変更するサーブレットフィルタと同時に使用する場合,そのサーブレットフィルタはHTTPレスポンス圧縮フィルタよりあとに配置する必要があります。 |