今回はサーブレットフィルタでGZIP圧縮に対応してみたいと思います。
必要なクラス
圧縮されたHTTPリクエストの解凍と、HTTPレスポンスの圧縮を実現するには、次の5つのクラスが必要です。
- GZIPFilter - Filterを実装します。HTTPヘッダを確認し、圧縮/解凍をするかどうか判断します。
- GZIPRequest - HttpServletRequestWrapperを継承します。GZIPServletInputStreamを返します。
- GZIPServletInputStream - HTTPリクエストを解凍するInputStreamです。
- GZIPResponse - HttpServletResponseWrapperを継承します。GZIPServletOutputStreamを返します。
- GZIPServletOutputStream - HTTPレスポンスを圧縮するOutputStreamです。
ほか、リクエストをそのままレスポンスするEchoServletを準備します。