• ベストアンサー

HTTPステータス 404 - /servlet/Testについて

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

質問者が選んだベストアンサー

  • ベストアンサー
  • liwet
  • ベストアンサー率72% (18/25)
回答No.2

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

re-entry
質問者

お礼

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

その他の回答 (1)

回答No.1

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

re-entry
質問者

お礼

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

関連するQ&A