- ベストアンサー
a href="..." とServlet
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()が呼ばれてるということですよね。。? どうしてでしょうか?教えて下さい。
- みんなの回答 (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){ //処理記述 }
その他の回答 (1)
a href="..."でサーブレットを開くとdoGet()が呼ばれます。 また、アドレスでhttp://...と入力した場合もdoGet()が呼ばれます。 (のはずなんですが…呼ばれてないんですよね?何故でしょう) doPost()が呼ばれる時は、 <form method="POST" action="サーブレットのアドレス"> </form> でフォームがsubmitされた時です。 <form method="GET" action="サーブレットのアドレス"> もしくは、methodを省略して <form action="サーブレットのアドレス"> とした時は、doGet()が呼ばれます。 参考までに。
お礼
どうもありがとうございました!! >アドレスでhttp://...と入力した場合もdoGet()が呼ばれます。 >(のはずなんですが…呼ばれてないんですよね?何故でしょう) すみません…私のミスでしたm(_ _)m doGet()の中でdoPost()を呼んでました。 汗汗) つまり、methodで指定しない限り、doGetなんですね。 わかりました。
お礼
おぉ~(◎0◎)!!頭いいですね!って、私が頭悪いだけなんですけど…(^^; わざわざ、ありがとうございました!やってみます。