Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

リクエストパラメータ取得サーブレットについて

今日からサーブレットをはじめた超初心者です。

本を見ながらやったのですがどうしてもうまくいきません。
作成しているサーブレットは、
htmlのページで入力されたパラメータをサーブレットに渡して
画面表示するという単純なものなんですが、
htmlからパラメータを入力した後に送信ボタンを押すと
エラー404がでます。

ちなみに、
web-xmlの設定は
<servlet>
 <servlet-name>GetPm</servlet-name>
 <servlet-class>chapter01.GetpmServlet</servlet-class>
</servlet>

<servlet-mapping>
 <servlet-name>GetPm</servlet-name>
 <url-pattern>/getpm</url-pattern>
</servlet-mapping>

htmlは、

<html><body>
   <form action=chapter01.GetPmServlet>
      <input type=text size=10 name=param>
      <input type=submit value=送信>
   </form>
</body></html>

です。
GetpmServletのクラスを WEB-INF/classes/chapter01/ に置き
web-xml と html を WEB-INF/ においています。
tomcatもブラウザ(localhost:8080/)で稼動を確認していますし、念のため落とし上げをしてみましたが変わりません。
いったい何がおかしいのでしょうか?。教えてください。
 

5

回答

5547

閲覧

5件の回答

評価

0

404エラーは、パラメータがどうとかではなく、そもそもURLが違うという意味です。

> <form action=chapter01.GetPmServlet>
ここが違います。本当に本に、こう書いてあったんでしょうか?

tomcatがどのように、実際のクラスまでたどり着くのかを、考えてみてください。
ヒントを言うと、formのactionはweb.xmlの<servlet-mapping>と関係します。

評価

0

mioさん、早速のお返事ありがとうございます。
本をよく読んだんですが、勘違いしてました。

<form action=/scwcd/getpm>
でした。

でも、送信を押すと

C:\scwcd\getpm

とおかしなURLになります。
コンテキストルートの設定がおかしいのでしょうか?。
それで、
<form action=scwcd/getpm>

としたんですが、

C:\tomcat4.1.30\webapps\scwcd\WEB-INF\scwcd\getpm

となりうまいきません。
最終的に正確なパスになるように
<form action=getpm>

にしたのですが、
C:\tomcat4.1.30\webapps\scwcd\WEB-INF\getpm
となり、URLは正しいのですが、

Internet Explorer ではこのページは表示できません
可能性のある原因:
インターネットに接続されていない。 
Web サイトに問題が発生している。 
アドレスに入力の間違いがある可能性がある。 

と表示されます。
ちなみにクエリストリングスで、
http://localhost8080:/scwcd/getpm?param=aa
とするとうまくいきます。

なにが駄目なのかネットで検索してもわかりませんでした。
<servlet-mapping>の<url-pattern>の設定値を<form action=>で指定したらできると、どの本やインターネットの情報でもあるのですが、その通りにしてるつもりでもできていないという事なんでしょうか?教えて下さいお願い致します。

評価

0

すいません。
<form action="http://localhost:8080/scwcd/getpm">
でうまくいきました。
しかし、http://localhost:8080/ って省略できるはずですよね?
webapps/ 以下に配置した scwcd は自動でコンテキストルートとして認識されると書いてあったと記憶してます。でもなんで
完全パスでないと動作しないんでしょうか?疑問です。
よろしければ教えて下さい。

評価

0

かなりオオボケしてました・・・。
htmlのファイルをダブルクリックして実行していたので、
http://〜 でないといけないのに 
C:\tomcat4.1.30\〜 となってました。
urlでhtmlファイルを指定して実行しなければできないですよね・・。
かなり恥ずかしいミスしてました。すいませんでした。

評価

0

いやー、私もたまにやりますよ(^_^;
cgiファイルなんかだと、ソースコードがそのまま表示されて(.cgi拡張子をどうしていいか分からないから)かなり焦ります。

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。