POST と GETの違い
移転しました。
Servletを作成していて、よくPOSTとGETの違いを忘れてしまうためメモっておく。
呼び出されるタイミング
(1)doGetメソッド * ブラウザから直接にURL指定で呼び出された場合 * ページ内のリンク(<a>タグ)や<img>、<frame>タグなどを介して呼び出された場合 * HTMLフォーム(<form>タグ)からGETメソッドでページが要求された場合 (methodオプションはデフォルトで“GET”と見なされます) (2)doPostメソッド * HTMLフォーム(<form>タグ)からPOSTメソッドでページが要求された場合
GET と POSTの違い
FORM の method 属性には get と post が指定できます。それぞれの違いについて書いておきます。
GET
get が指定されていると、フォームの送信時には GET メソッドで要求を出します。 具体的には、action 属性に指定した URI に ? をつけ、その後にデータをくっつけて、 その URI を要求します。データは URI として送られ、それを受け取ったサーバは ? 以降を 環境変数に入れて CGI のプログラムに渡します。実装上、URI の長さや環境変数の長さに 制限がある場合、長いデータを送ろうとすると切れてしまうことがあります。掲示板への 書き込みのように、大量のデータを送る必要がある場合には向きません。 また、FORM を使わずに <a href="http://hpcgi1.nifty.com/bakera/dk2/jump.cgi?no=12017"> のような記述で CGI にデータを送信することも出来ますが、この場合もメソッドは GET になります。
POST
post が指定されていると、POST メソッドが使われます。データは URI の一部ではなく、 独立した本文として送られますので、よほどのことがない限り切られることはありません。