アプリ版:「スタンプのみでお礼する」機能のリリースについて

HTMLファイルに以下のタグを書きました。
<A HREF="http://localhost:8080/.../servlet/test">ここ</A>

上記の「ここ」を押すと、test.javaのdoPost()ではなく、doGet()が
呼ばれるんですか?よく分からなくなってきました(x_x;)
わたしの作ったプログラムはdoPost()しか再定義していませんので、動きませんでした。(後でdoGet()を再定義したら動いたんですが)
ちなみに、IEでアドレスとして"http://localhost:8080/.../servlet/test"
を指定したら、doGet()なしで動きました。ここではdoPost()が呼ばれてるということですよね。。?
どうしてでしょうか?教えて下さい。

A 回答 (2件)

私はいつも、全てのサーブレットの親クラスにこんな定義をしておきます。


いちいち、これはGetかPostか?って考えるの大変ですもんね。
こうすると、親クラスのperfomTask()で、セッション関連の共通処理とかを書いておけるし、親クラスにlog排出処理のメソッド作っておけば、全サーブレットで使えますし。

//親クラスの定義
public void doGet(HttpServletRequest req,HttpServletResponse){
performTask(req,res);
}
public void doPost(HttpServletRequest req,HttpServletResponse){
performTask(req,res);
}
protected void performTask(HttpServletRequest req,HttpServletResponse){
perfomTask0(req,res);
}

子クラスの定義
protected void performTask0(HttpServletRequest req,HttpServletResponse){
//処理記述
}
    • good
    • 1
この回答へのお礼

おぉ~(◎0◎)!!頭いいですね!って、私が頭悪いだけなんですけど…(^^;
わざわざ、ありがとうございました!やってみます。

お礼日時:2001/12/21 15:50

a href="..."でサーブレットを開くとdoGet()が呼ばれます。


また、アドレスでhttp://...と入力した場合もdoGet()が呼ばれます。
(のはずなんですが…呼ばれてないんですよね?何故でしょう)

doPost()が呼ばれる時は、
<form method="POST" action="サーブレットのアドレス">
</form>
でフォームがsubmitされた時です。

<form method="GET" action="サーブレットのアドレス">
もしくは、methodを省略して
<form action="サーブレットのアドレス">
とした時は、doGet()が呼ばれます。

参考までに。
    • good
    • 0
この回答へのお礼

どうもありがとうございました!!
>アドレスでhttp://...と入力した場合もdoGet()が呼ばれます。
>(のはずなんですが…呼ばれてないんですよね?何故でしょう)
すみません…私のミスでしたm(_ _)m doGet()の中でdoPost()を呼んでました。
汗汗)
つまり、methodで指定しない限り、doGetなんですね。
わかりました。

お礼日時:2001/12/21 15:52

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

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