電子書籍の厳選無料作品が豊富!

サーブレットのマッピングについて教えてください。

現在サーブレットを学習しています。
書籍に付属するサンプルをとりあえず動かしている段階なのですが、マッピングがうまくいきません。

http://localhost:8080/エントリポイント/servlet/MyServlet

とアドレス入力した場合はきちんと表示されるのですが、WEB-INF直下にweb.xmlファイルを作成して

http://localhost:8080/エントリポイント/servlet/ms

にアクセスすると404エラーが返ってきます。
これは何が原因なのでしょうか?
知識不足もあって皆目検討がつかないため、皆様のお力をお借りしたく思います。
よろしくお願いいたします。

なお、サーブレットはWEB-INF直下のclassesというディレクトリ内にコンパイルしておいてあります。
また、web.xmlの内容は以下のとおりです。

<?xml version="1.0" encoding="Shift_JIS"?>

<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">

<!-- MyServlet→msと定義する -->
<web-app>
<servlet>
<servlet-name>ms</servlet-name>
<servlet-class>MyServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ms</servlet-name>
<url-pattern>/classes</url-pattern>
</servlet-mapping>
</web-app>

A 回答 (1件)

<url-pattern>/classes</url-pattern>ですと、

http://localhost:8080/○○/classesというURLに公開することになってしまいます。

おそらく、<url-pattern>の意味を勘違いされているのでしょう。これは、クラスがある場所ではなく、クラスの公開先です。/servlet/msに公開したければ、<url-pattern>/servlet/ms</url-pattern>とする必要があります。

それから、<servlet-class>がMyServletとなっていますが、これはパッケージはないのですか? 例えば、jp.hogeパッケージに配置されているのであれば、jp.hoge.MyServletと指定しなければクラスは見つからないので注意してください。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

<url-pattern>/classes</url-pattern>

<url-pattern>/servlet/ms</url-pattern>
と変更すると、ちゃんと表示されました。

パッケージというものについては、まだよくわかりません。
とりあえず書籍の内容のとおりに、付属CD内のデータを使って動かしてみているだけなのです。
使用した書籍には

<url-pattern>/classes</url-pattern> ←配備先ディレクトリ

という風に書かれていたのですが、そもそもこれが大嘘だったのですね。
勉強になりました。
ありがとうございました。

お礼日時:2007/10/08 16:41

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