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 の一部ではなく、
独立した本文として送られますので、よほどのことがない限り切られることはありません。