GETメソッドとPOSTメソッドの違い

サーブレットは、WebクライアントからHTTPリクエストを受信したら実行されます。

HTTPリクエストでは、リクエストラインの中でリクエストの種類(メソッド)を指定します。詳細は「HTTPリクエストの構成 」を参照してください。

サーブレットは、そのリクエストの種類に応じて最初に呼び出されるメソッドが変わってきます。
例えば、リクエストの種類が「GET」であれば、サーブレットではdoGet()メソッドが呼び出され、リクエストの種類が「POST」であれば、doPost()メソッドが呼び出されることになります。

GETメソッドとPOSTメソッド

リクエストの種類は「GET」「POST」以外にもあり、サーブレットはそれらに対するメソッドが呼び出されます。
どのようなメソッドが存在するのかは「サーブレット作成」ダイアログ等から確認できます。

メソッドの種類

ただし、主に使われるのはdoGet()メソッドかdoPost()メソッドのどちらかになります。

GETメソッドとPOSTメソッドの違い

では、GETメソッドとPOSTメソッドの違いは何でしょう。

両者の違いは、パラメータの受け渡し方法にあります。
GETメソッドでは、サーブレットに受け渡すパラメータをURLに組み込んでいます。
対して、POSTメソッドは、HTTPリクエストのメッセージボディの中に組み込んでいます。

例えば、前回の記事で作成したサンプルでは、リクエストの種類に「GET」を指定していたので、サーブレットを呼び出すURLは下記のようになります。

http://localhost:8080/RequestRecvPJ/RequestRecv?Game=%E3%83%A2%E3%83%B3%E3%82%B9%E3%82%BF%E3%83%BC%E3%83%8F%E3%83%B3%E3%82%BF%E3%83%BC&Hard=%E3%83%95%E3%82%A1%E3%83%9F%E3%82%B3%E3%83%B3

※「%E3」などはURLエンコードされた状態の文字列です。URLデコードしたら元の文字列に戻ります。

GETの場合、URL内部にパラメータが組み込まれるので、ブラウザの履歴やキャッシュが残ります。
POSTは残らないので、機密性が高いと言えなくもありませんが、結局、パケットは平文で流れるので、機密性について考える場合は、どちらにしても別途、暗号化の仕組みを取り入れる必要があります。