プロが教える店舗&オフィスのセキュリティ対策術

初歩的な質問で失礼します。

サーブレットAに doGet, doPost, serviceメソッドを実装しています。
サーブレットBのdoPostメソッド内にて
サーブレットAにforwardを実行する場合に、
呼出されるのはサーブレットAのどのメソッドですか?

JSPへのforwardはできたのですが、
サーブレットへのforwardができず悩んでいます。

サーブレットのAPIを読んでもいまいちわかりません。
何かメソッドに関する制約があるのでしょうか?
上の質問は全くマト外れでしょうか?

追加ですが・・・
サーブレットからforwardされたサーブレットで、
そこからさらにJSPへforwardすることはできますか?

Apache2.0.43+tomcat4.1.12+Java1.4.0_01です。

A 回答 (2件)

> サーブレットBのdoPostメソッド内にて


> サーブレットAにforwardを実行する場合に、
> 呼出されるのはサーブレットAのどのメソッドですか?

doPost() のはず。実際には、forward するときの HttpServletRequest#getMethod() で取得できる文字列に従うはず。

> JSPへのforwardはできたのですが、
> サーブレットへのforwardができず悩んでいます。

forward に関して、servlet と JSP の違いはないはず(というか、JSP は自動コンパイルされる servlet だし)。
getRequestDispatcher() してるパスが間違っているのだと思います。

> サーブレットからforwardされたサーブレットで、
> そこからさらにJSPへforwardすることはできますか?

コンテナの実装次第だけど、forward() は、サブルーチン呼び出しと変わらないはずなので、
回数に制限はないはず。

この回答への補足

「doPostからforwardすればdoPost」というのは、
厳密には間違いであって、正しくは
「getMethod()で取得した結果からdoPost」ですね。。

了解しました。大変解りやすく、ありがとうございます。

補足日時:2002/12/13 18:09
    • good
    • 0
この回答へのお礼

ありがとうございました。
できました。

serviceを作っことが原因で
doPostが無視されていたことが動かない原因でした。

お礼日時:2002/12/13 18:08

サーブレットAは HttpServlet を拡張しているのだと思いますが、


service メソッドはオーバーライドしては駄目です。
HttpServlet の service メソッド内で、処理を doGet や doPost に
委譲するようになってますので、これをオーバーライドしてしまうと、
doGet も doPost も実行されなくなります。

ひょっとしたら、そのせいでサーブレットが実行されてないと
勘違いしているのかもしれません。


なんの設定もせずに forward した場合、doGet が呼ばれます。
また、forward の回数には制限はありません。
    • good
    • 0
この回答へのお礼

ありがとうございました。
当件無事解決しました。

お礼日時:2002/12/13 18:19

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