JavaWeb を学習する初期段階では、誰もが HttpServlet の doGet メソッドと doPost メソッドに遭遇するでしょう。 2 日前に「Head First Servlets & JSP」を読んだところ、サーブレットにおける get リクエストと post リクエストの違いについて説明されていたので、次のように要約します。
1: 要求されたデータのサイズが異なります。
get で要求されたデータは URL に付加され、通常 URL のデータ サイズは 2K を超えることができないため、get リクエスト メソッドを使用するデータのサイズには制限があります。 post リクエスト メソッドではデータがメッセージ本文に配置されるため、理論上はデータ量に制限はありません。 (ただし、実際の運用ではあまり大きくすることはできません)
2:セキュリティが違う
get で要求したデータは URL に付加されるため、外部ユーザーが簡単に見ることができます。この観点から見ると、安全ではありません。 post メソッドはリクエストをメッセージ本文に配置し、URL に直接表示されないため、この観点からデータはより安全になります。
3: ブックマークの作成
Get リクエストではブックマークを作成できますが、Post リクエストでは作成できません。たとえば、ユーザーが検索ルールを指定できるページがあるとします。ユーザーは 1 週間後に再度アクセスし、元のデータを取得したいと考えますが、この時点ではサーバー上に新しいデータがあります。
4: メソッドの使用
get は、サーバーに変更を加えることなく、単純に何かを取得するために使用されます。投稿とは、ユーザーが処理のためにデータを送信し、サーバー上のデータを変更できることを意味します。
5: リクエストはべき等ですか?
get リクエストはべき等であり、何かを取得するだけであり、サーバー上のコンテンツは変更されません。悪影響を及ぼさずに複数回実行できます。投稿は冪等ではなく、投稿本文で送信されたデータは取り消し不能なトランザクションに使用される可能性があります。したがって、この観点から、 doPost() 関数は注意して使用する必要があります。
フォームで method="POST" が指定されていない場合、デフォルトで HTTP GET リクエストが使用されます。つまり、デフォルトの状態では get リクエストが呼び出されます。
JavaWeb を学習する初期段階では、誰もが HttpServlet の doGet メソッドと doPost メソッドに遭遇するでしょう。
(1) doGet メソッド: 主に Http での Get リクエストを処理します。 (2) doPost メソッド: 主に Http での Post リクエストを処理します。
では、Get リクエストと Post リクエストの違いは何でしょうか?
(1) get には 1 つのストリームしかありません。パラメータの数は厳密に制限されており、たとえば、http://localhost:8888/javaweb/getServlet?name=123 のようになります。
(2) 投稿のパラメータは URL ではなく別のストリームを通じて渡されるため、非常に大きくなる可能性があり、ファイルのアップロードなどのバイナリ データも渡される可能性があります。
doGet メソッドと doPost メソッドを使用する場合:
1. フォームを通じて送信されたサーブレットについて、フォームのメソッドが get か post かを確認します。
2. リンク <a href...>、doGet を通じてアクセスされるサーブレット
3. IE アドレス バーにサーブレット アドレスを直接入力します (doGet)。