この記事ではサーブレットがクライアントにレスポンスを返す際に、そのレスポンスを格納するオブジェクトとそのオブジェクトにアクセスするためのインターフェイスについて解説する。
HttpServletResponseインターフェイスとは何か
最初に、クライアントに返すレスポンスの情報がどのようにWebコンテナによって処理されるか見てみよう。レスポンスの情報はHttpServletResponseオブジェクトに入れてサーブレットとWebコンテナの間で受け渡しされる。
HttpServletResponseインターフェイスとは、このHttpServletResponseオブジェクトに情報を入れたり出したりしてアクセスするためのインターフェイスである。
HttpServletResponseオブジェクトは、サーバーからクライアントへ戻されるすべての情報をオブジェクトの内部にカプセル化している。つまり、HttpServletResponseインターフェイスに定義されたメソッドを使ってのみアクセスできると言うことだ。HTTPプロトコルの中で、カプセル化された情報はサーバーからクライアントにレスポンスのHTTPヘッダーかメッセージのボディによって送信される。
HttpServletResponseオブジェクトへのインターフェイス
レスポンスを送信するためにHTTPに依存する機能を提供するためにServletResponseインターフェイスを拡張したのが、HttpServletResponseインターフェイスである。例えば、HTTPヘッダーやボディにアクセスするためのメソッドを持っている。
WebコンテナはHttpServletResponseオブジェクトを生成して、それをサービスメソッド(doGet, doPostなど)に引数として渡す。
サーブレットは、引数として渡されたHttpServletResponseオブジェクトに対してメソッドを介して情報を読んだり書き込んだりする。それぞれのメソッドの詳細は別の記事で見ることができる。
まとめ
HttpServletResponseインターフェイスは、レスポンスの送信に関して HTTP 独自の機能性を与えるためにServletResponse インタフェースを拡張したもの、という所がポイントだろう。アプリケーションによって生成されるWebページの構成がより自由に出来るということでもあるので覚えておきたい。