OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

doGetとdoPostの違い

  • 困ってます
  • 質問No.116675
  • 閲覧数10801
  • ありがとう数7
  • 気になる数0
  • 回答数2
  • コメント数0

それぞれブラウザからのリクエストの種類に対応する
メソッドがdoGet,doPost。
doGetはブラウザからGETでそのサーブレットに
リクエストがあった時に、処理が始まるメソッド、
doPostは同じようにPOSTを受け取った時に動き出す

・・・・・ということなのですが、
doGetもdoPostも、中身のコーディングの仕方としては
同様でいいのでしょうか?
いま、doGetでリクエストに対応する処理をうけつけて
いるのですが、255バイトまでなのでdoPostのほうが
いいということがかかれていました。

これは、ブラウザ:Servletのメソッドで対応してれば
いいだけで、結局は送信量の違いだけですか?
そのへんがよくわかってないので教えてください。

ちなみに、doGetでやってる処理は、

public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {

//Bean(workBean)のインスタンス作成
wk = new work_Bean();
//Bean処理実行
wk.Work();





//BeanをJSPに渡すためにHttpServletRequestオブジェクトにセット
request.setAttribute("wk",wk) ;

//ViewであるJSPを呼び出す
RequestDispatcher rDispatcher =
request.getRequestDispatcher("/kanri_JSP.jsp");
rDispatcher.forward(request,response);

こんなかんじでしてます。
あとは、ネットで、人のサンプルとかみると
doGetメソッドに処理をかいており、doPostでは
doGet(request,response);として
doGetをよんでたりするんですが、
これは、PostでもGetと同様の処理ができると
いうことですか?
基本的な質問過ぎるかとおもいますがおしえてください。
通報する
  • 回答数2
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.1
レベル14

ベストアンサー率 50% (1122/2211)

GET と POST では、パラメータをプログラムに渡す仕組みが全く違います。
仕組みが違うので渡せるパラメータの大きさが違う、等の違いが出てきます。

ですが、Servlet では、その違いを request オブジェクトが全部隠してくれて
いるので、気にしなくて良いです。つまり、同じことができて、呼出され方が
違う、と。

普通は、html や JSP の方も、Servlet を意識して書くでしょうから、
どちらかだけの実装で良いのですが、汎用的(呼ぶ人を特定しない)な Servlet
を書こうと思ったら、両方を実装しておく、と理解しておけば良いです。


ちなみに、GET で渡せるパラメータの大きさは 255 バイトと決っているわけでは
ないし、POST で渡せるパラメータの大きさに制限が無い、というわけでもあり
ません。

GET の制限は、どちらかというとブラウザ側の実装によって決ってくることで、
POST に制限があるとしたらサーバ側(例えば、Servlet コンテナ)の実装に
よってきます。
補足コメント
noname#2205

解答ありがとうございます。
別にコーディング上は意識しなくてもいいのですね。
今やってみたらそのとおり、でした。

>普通は、html や JSP の方も、Servlet を意識して書く
>でしょうから、
>どちらかだけの実装で良いのですが、汎用的(呼ぶ人を特
>定しない)な Servlet
>を書こうと思ったら、両方を実装しておく、と理解してお
>けば良いです。

なぜ、両方を実装するのでしょうか?
呼ぶ人を想定しない、・・・からなのでしょうが、
いまいち、具体的になぜ、なのかわかりません。
HTMLやJSPがGetやPostの両方を使う場合があるから??

うーん、勉強不足ですみません。。


>GET の制限は、どちらかというとブラウザ側の実装によっ
>て決ってくることで、
>POST に制限があるとしたらサーバ側(例えば、Servlet
>コンテナ)の実装に
>よってきます。

ああ、そうなんですか。勉強になりました。。
ありがとうございます。
投稿日時 - 2001-08-10 10:41:33
-PR-
-PR-

その他の回答 (全1件)

  • 回答No.2
レベル14

ベストアンサー率 50% (1122/2211)

> なぜ、両方を実装するのでしょうか? > 呼ぶ人を想定しない、・・・からなのでしょうが、 > いまいち、具体的になぜ、なのかわかりません。 例えば、Perl なんかで書かれたフリーの掲示板の CGI とかってありますよね。 それとか、ソフト屋さんが車内で配布している共通プログラムとか。 そういったレベルで、Servlet を書こうとしたら、「POST でも GET ...続きを読む
> なぜ、両方を実装するのでしょうか?
> 呼ぶ人を想定しない、・・・からなのでしょうが、
> いまいち、具体的になぜ、なのかわかりません。

例えば、Perl なんかで書かれたフリーの掲示板の CGI とかってありますよね。
それとか、ソフト屋さんが車内で配布している共通プログラムとか。

そういったレベルで、Servlet を書こうとしたら、「POST でも GET でも
使えます」って両方を実装することになりますよ。

もちろん、「POST にしか対応してません」と取扱説明に書いておいても
良いのだけれど。
補足コメント
noname#2205

ありがとうございます。

理解できました。
投稿日時 - 2001-08-10 18:44:12


このQ&Aのテーマ
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ