- ベストアンサー
HTTPステータス 404 - /servlet/Testについて
はじめまして。Javaの初心者です。 どうしてもわからないことがあります。それは、 最初にJSPページでHTMLフォームにデータを入力して <input type="submit"/>タグでサーブレットに送信し て、サーブレットでHTMLフォームのデータ を使用して処理を行わせてから再び最初のJSPページ にリクエストを転送(forward)すると、サーブレット での処理結果が表示されるのですが、そのあと再び HTMLフォームにデータを入力して <input type="submit"/>タグでサーブレットに送信す ると、「HTTPステータス 404 -/servlet/Test」などと 表示され、サーブレットが利用可能でなくなります。 なぜなのでしょうか?どのようにしたら解決できるの かどうか教えてください。お願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
HTMLフォームからサーブレットにアクセスするには、URLを全て書くと、 http://ホスト名/アプリケーション名/サーブレット名 って感じでURLを指定しますね。(本当はポート番号とかもあるけど省略) エラー内容で、"/servlet/Test"と出ているので、アプリケーション名の部分が指定されていないのではないでしょうか? JSPから forward したときは、アプリケーションの内部での指定だったので、/servlet/Test でサーブレットに転送できたのだと思います。 HTMLのフォームから送信するときは、アプリケーション名も含めて、URLを /アプリケーション名/servlet/Test とするか、HTMLからの相対パスで指定すればいいと思います。 HTMLがアプリケーションのルートにあるのなら、 servet/Test でアクセスできると思います。
その他の回答 (1)
- counter_class
- ベストアンサー率57% (4/7)
formに記述しているactionのURLは相対URLでしょうか。もし、相対URLだとしたら絶対URLに変えてみても同様の現象は起こるでしょうか。 もし、絶対URLに変更して現象が発生しなくなったとしたら、formに記述したactionのURLを確認しなおしてみてはいかがでしょうか。
お礼
counter_class様へ 連絡が遅くなりまして、申し訳ございませんでした。 HTMLフォームの<form>タグのaction属性を絶対URL に変更したところ、404エラーは、表示されなくなりました。ありがとうございます。助かりました。 勉強不足を痛感しています。
お礼
liwet様へ 連絡が遅くなりまして、申し訳ございませんでした。 HTMLフォームの<form>タグのaction属性を絶対URL に変更したところ、404エラーは、表示されなくなりました。ありがとうございます。助かりました。 勉強不足を痛感しています。