プロが教えるわが家の防犯対策術!

はじめまして。Javaの初心者です。
どうしてもわからないことがあります。それは、
最初にJSPページでHTMLフォームにデータを入力して
<input type="submit"/>タグでサーブレットに送信し
て、サーブレットでHTMLフォームのデータ
を使用して処理を行わせてから再び最初のJSPページ
にリクエストを転送(forward)すると、サーブレット
での処理結果が表示されるのですが、そのあと再び
HTMLフォームにデータを入力して
<input type="submit"/>タグでサーブレットに送信す
ると、「HTTPステータス 404 -/servlet/Test」などと
表示され、サーブレットが利用可能でなくなります。
なぜなのでしょうか?どのようにしたら解決できるの
かどうか教えてください。お願いします。

A 回答 (2件)

HTMLフォームからサーブレットにアクセスするには、URLを全て書くと、


http://ホスト名/アプリケーション名/サーブレット名
って感じでURLを指定しますね。(本当はポート番号とかもあるけど省略)
エラー内容で、"/servlet/Test"と出ているので、アプリケーション名の部分が指定されていないのではないでしょうか?
JSPから forward したときは、アプリケーションの内部での指定だったので、/servlet/Test でサーブレットに転送できたのだと思います。
HTMLのフォームから送信するときは、アプリケーション名も含めて、URLを
/アプリケーション名/servlet/Test
とするか、HTMLからの相対パスで指定すればいいと思います。
HTMLがアプリケーションのルートにあるのなら、
servet/Test
でアクセスできると思います。
    • good
    • 0
この回答へのお礼

liwet様へ
連絡が遅くなりまして、申し訳ございませんでした。
HTMLフォームの<form>タグのaction属性を絶対URL
に変更したところ、404エラーは、表示されなくなりました。ありがとうございます。助かりました。
勉強不足を痛感しています。

お礼日時:2006/06/29 20:41

formに記述しているactionのURLは相対URLでしょうか。

もし、相対URLだとしたら絶対URLに変えてみても同様の現象は起こるでしょうか。
もし、絶対URLに変更して現象が発生しなくなったとしたら、formに記述したactionのURLを確認しなおしてみてはいかがでしょうか。
    • good
    • 0
この回答へのお礼

counter_class様へ
連絡が遅くなりまして、申し訳ございませんでした。
HTMLフォームの<form>タグのaction属性を絶対URL
に変更したところ、404エラーは、表示されなくなりました。ありがとうございます。助かりました。
勉強不足を痛感しています。

お礼日時:2006/06/29 20:42

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