この記事ではクライアントがサーブレットにリクエストを送る際に、そのリクエストを格納するオブジェクトとそのオブジェクトにアクセスするためのインターフェイスについて解説する。
HttpServletRequestインターフェイスとは何か
最初に、クライアントからのリクエスト情報がどのようにWebコンテナによって処理されるか見てみよう。リクエストの情報はHttpServletRequestオブジェクトに入れてWebコンテナとサーブレットの間で受け渡しされる。
HttpServletRequestインターフェイスとは、このHttpServletRequestオブジェクトに情報を入れたり出したりしてアクセスするためのインターフェイスである。
HttpServletRequestオブジェクトは、クライアントからサーバーへ送られるすべての情報をオブジェクトの内部にカプセル化している。つまり、HttpServletRequestインターフェイスに定義されたメソッドを使ってのみアクセスできると言うことだ。HTTPプロトコルの中で、カプセル化された情報はクライアントからサーバーにリクエストのHTTPヘッダーかメッセージのボディによって送信される。
リクエストパラメータ
リクエストパラメータは、情報をリクエストの一部としてクライアントからサーブレットに送る文字列のセットである。コンテナはこのパラメータをHttpServletRequestオブジェクトに追加する。この時、名前と値のペアーとして保存される。ひとつのパラメータの名前の下に複数の値を保存できる。次のメソッドがServletRequestインターフェイスのメソッドとしてパラメータにアクセスするために用意されている。
- getParameter
- getParameterNames
- getParameterValues
- getParameterMap。
HttpServletRequestオブジェクトへのインターフェイス
リクエストを受信するためにHTTPに依存する機能を提供するためにServletRequestインターフェイスを拡張したのが、HttpServletRequestインターフェイスである。例えば、HTTPヘッダーやボディにアクセスするためのメソッドを持っている。
WebコンテナはHttpServletRequestオブジェクトを生成して、それをサービスメソッド(doGet, doPostなど)に引数として渡す。
サーブレットは、引数として渡されたHttpServletRequestオブジェクトに対してメソッドを介して情報を読んだり書き込んだりする。それぞれのメソッドの詳細は別の記事で見ることができる。
まとめ
HttpServletRequestインターフェイスは、リクエストの送信に関して HTTP 独自の機能性を与えるためにServletRequest インタフェースを拡張したもの、という所を踏まえて本ページの内容を覚えておきたい。