それぞれブラウザからのリクエストの種類に対応する
メソッドが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と同様の処理ができると
いうことですか?
基本的な質問過ぎるかとおもいますがおしえてください。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

GET と POST では、パラメータをプログラムに渡す仕組みが全く違います。


仕組みが違うので渡せるパラメータの大きさが違う、等の違いが出てきます。

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

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


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

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

この回答への補足

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

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

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

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


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

ああ、そうなんですか。勉強になりました。。
ありがとうございます。

補足日時:2001/08/10 10:41
    • good
    • 0

> なぜ、両方を実装するのでしょうか?


> 呼ぶ人を想定しない、・・・からなのでしょうが、
> いまいち、具体的になぜ、なのかわかりません。

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

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

もちろん、「POST にしか対応してません」と取扱説明に書いておいても
良いのだけれど。

この回答への補足

ありがとうございます。

理解できました。

補足日時:2001/08/10 18:44
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qサーブレット(doGetメソッド内)でMySQLテーブル内を、

サーブレット(doGetメソッド内)でMySQLテーブル内を、
CSVファイルとしてクライアントへダウンロードする以下プログラムで、
UTF-16LE(BOM無し)でCSVファイルが正常に出力されております。

そこでご質問内容なのですが、このCSVを出力する際に、
BOM無しではなくて、
「BOM有り」でCSVファイル出力する(BOMを追加する)方法を教えてください。
  ↓
final ResultSetMetaData meta = rs.getMetaData();
(上記のrsは、MySQLテーブル内をSELECTしたレコードセットです)

response.setContentType("application/octet-stream;charset=utf-16le");
response.setHeader("Content-Disposition", "attachment; filename="
+ "KYOIKU.csv");
out = response.getWriter();

for (int i = 1; i <= meta.getColumnCount(); i++) {
out.print("\"" + meta.getColumnName(i) + "\"");
out.print(i < meta.getColumnCount() ? "\t" : "");
}
out.print("\r\n");

while (rs.next()) {
for (int i = 1; i <= meta.getColumnCount(); i++) {
out.print("\"" + rs.getString(i) + "\"");
out.print(i < meta.getColumnCount() ? "\t" : "");
}
out.print("\r\n");
}

} catch (final NumberFormatException e) {
(以下省略)

お世話になります
以上、宜しくお願い致します。

サーブレット(doGetメソッド内)でMySQLテーブル内を、
CSVファイルとしてクライアントへダウンロードする以下プログラムで、
UTF-16LE(BOM無し)でCSVファイルが正常に出力されております。

そこでご質問内容なのですが、このCSVを出力する際に、
BOM無しではなくて、
「BOM有り」でCSVファイル出力する(BOMを追加する)方法を教えてください。
  ↓
final ResultSetMetaData meta = rs.getMetaData();
(上記のrsは、MySQLテーブル内をSELECTしたレコードセットです)

response.setContentType("application...続きを読む

Aベストアンサー

> out = response.getWriter();
の後辺りで、BOMを出力したら良いんじゃないでしょうか。

out.print("\uFEFF"); // BOM 出力。

テストしていませんが、こんな感じで、如何でしょう。

QBean→JSPでの文字化け

こんにちは。

質問したいことがあります。
JSPで定義した全角文字列はそのままブラウザに表示されるのですが、Bean内で定義した全角文字が文字化けをしてしまいます。
文字化けは、JSPファイルからBeanのメソッドを使ってパラメータを取得する際に
発生します。

----------------------例----------------------------------------
<jsp:useBean id="tBean" scope="session" class="test.testBean" />

<p>運勢は <em><%= tBean.getUnsei() %></em> です!</p>
------------------------------------------------------------------
※getUnsei()はBean内で定義された全角文字を取得するメソッドで、このメソッドで取得した文字列が文字化け(?が多数出力される)します。ちなみに「運勢は」と「です!」という文字列は、そのまま文字化けせずに出力されます。

どう対処してよいか全く分かりません。
もし何か分かることがありましたらご教授御願い致します。

こんにちは。

質問したいことがあります。
JSPで定義した全角文字列はそのままブラウザに表示されるのですが、Bean内で定義した全角文字が文字化けをしてしまいます。
文字化けは、JSPファイルからBeanのメソッドを使ってパラメータを取得する際に
発生します。

----------------------例----------------------------------------
<jsp:useBean id="tBean" scope="session" class="test.testBean" />

<p>運勢は <em><%= tBean.getUnsei() %></em> です!</p>
------------------------------------...続きを読む

Aベストアンサー

何分情報が少なく的を得ていないかもしれませんが、
tBean.getUnsei()
で表示される文字列は
"??????????????"
でしょうか?
だとしたらエンコーディングを2回やっている可能性があります。JSPから受け取った文字列のエンコーディング処理を再度確認してみてください。

Q標準入力をするメソッドを作り例外処理をそのメソッド内で行います

以下のソースでエラーが発生します
return文は書いているのですが
エラー内容は 「return 文が指定されていません」
と出ます。
return文はどこに置けばいいのでしょうか。
よろしくお願いします。

public static int getStdin(){
 try{
  BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
  return (Integer.parseInt(br.readLine()));
 }catch(IOException e){
  System.out.println("標準入出力でのエラー");
 }catch(NumberFormatException e){
  System.out.println("不正な入力が行われました");
 }finally{
  System.out.println("例外処理が無事終了");
 }
}

Aベストアンサー

例外をcatchした場合にreturnが実行されないからです。
たとえば、エラーなら-1を返すとか決めて、
returnを記述する必要があります。

Qjsp + servlet + Beans

なぜ、jsp + servlet + Beansというような使い方をするのでしょうか?

jsp + Beansでは、表示用にjsp、複雑な処理はBeansという感じにすることの意味はわかります。
同様に、jsp + servletもわかります。

servletで行う処理と、Beansで行う処理はどこで線を引けば良いのでしょうか?

よろしくお願いします。

Aベストアンサー

>Beansとクラスっていうのは、別ですよね?
Beanとクラスは一緒です。

>クラスでやる場合はどのような不都合があるのでしょうか?
JavaBeansとは基本的には値の受け渡しで使用します。
主にsetter(set~)メソッドとgetter(get~)メソッドで成り立ちます。
またその中にビジネスロジックを搭載しsetした値から何かの数値を計算するとかしてそれをgetで取得するって感じです。

一応参考までにJavaBeansクラスはこんな感じです。

public class SampleBeans{
private String name;//名前
 private int number://番号

public String getName(){
return this.name;
}

public int getNumber(){
return this.number;
}

public void setName(String name){
this.name = name;
}

public void setNumber(int number){
this.number = number;
}

}

>Beansとクラスっていうのは、別ですよね?
Beanとクラスは一緒です。

>クラスでやる場合はどのような不都合があるのでしょうか?
JavaBeansとは基本的には値の受け渡しで使用します。
主にsetter(set~)メソッドとgetter(get~)メソッドで成り立ちます。
またその中にビジネスロジックを搭載しsetした値から何かの数値を計算するとかしてそれをgetで取得するって感じです。

一応参考までにJavaBeansクラスはこんな感じです。

public class SampleBeans{
private String name;//名前
 private...続きを読む

QJSPでBeanにセット

お世話になります。

JSPでフォームの各値に入るものをBeanにつめたいと思います。
strutsなどは特にコーディングしなくてもBeanに勝手にはいっていくとおもうのですが、
あれはいったいどうやって実現しているのでしょうか?

リフレクションとかをつかって変数名からメソッド名をひっぱりだしてそれでsetPropertyとかをよんでいるのでしょうか?

Aベストアンサー

その通りです。
実際には、jakarta commons プロジェクト内の
サブプロジェクト「BeanUtils」が、リフレクションを
扱いやすくするためのメソッド群を提供しており、
Strutsはそちらを利用しています。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報