ここから本文です

サーブレットマッピングのところがまったく理解できません

dio********さん

2012/3/503:25:27

サーブレットマッピングのところがまったく理解できません

web.xml 内で
<servlet>
<servlet-name>hello</servlet-name>
<servlet-class>HelloWorld</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/servlet/hello</url-pattern>
</servlet-mapping>

という例がよく挙げられてますが、なぜおしまいのところで /servlet/hello
という風に /servlet を付けねばならないかが腑に落ちません。
ここには何を書くのかがどの本を見てもあまりはっきり書いてありません。
urlパターンとは何のことでしょうか?
どこにそれは記述してあるものなのでしょうか?

まったく理解できてませんので、やさしめに説明をお願いできたらと思います。

補足サーブレットマッピングのところは
セキュリティーのためにわざと複雑にしてあるのだという説明の本もありました。

あ=川.class
あ=山

という記述を web.xml に書いておくことで、
山 で 川 を呼び出せる という風に理解してるんですが、
木構造を表すと言われるとそんなものなのかなとも思います。
XML の本を少しばかり読みましたが、sinapusu2002さん の説明では
山 で 川 を呼び出せる仕組みがよくわかりません。
(下につづく)

閲覧数:
1,541
回答数:
2
お礼:
50枚

違反報告

ベストアンサーに選ばれた回答

sin********さん

編集あり2012/3/509:10:08

国際規格でそう決まってるからです。
xmlファイルは木構造というものを表現しています。

WEB.XMLはXMLファイルです。
例えばつぎのようなXML文書があったとします。

<A>
<B>14</B>
<C>10</C>
</A>
<D>
<B>9</B>
<E>8</E>
</D>

とあった場合AというもののBの状態やCの設定などを決めるという意味になります。
そしてAが閉じられて次はDのBという状態やEの状態を決めるという意味になります。
<A>、、、</A>の間に書かれたものは全部Aの属性であるという意味となります。

Aが車でDが飛行機を表すゲームのデータだとしBをホイールの種類の指定Cをハンドルの種類の指定、Eをその乗り物のカラーだとするなら。

Aの車のBはホイールの種類を指定し、Cというハンドルの種類を決める。
Dのホイールの種類をBで決めて、カラーをEで決める。
という意味になります。

質問した人からのコメント

2012/3/12 01:43:10

url-pattern に
hello1 から hello10 まである場合
hello1 の前に /servlet/ を付けて web.xml に書いておくことで
/servlet/* でhello1 から hello10 まで表せるので /servlet/hello1 と書くと解釈しています。


今後は下記ブログにて広くアドバイスを承れればと願っております。
http://blogs.yahoo.co.jp/uuatanabetakahiko/29508106.html

ベストアンサー以外の回答

1〜1件/1件中

プロフィール画像

カテゴリマスター

rin********さん

2012/3/509:45:15

>なぜおしまいのところで /servlet/helloという風に /servlet を付けねばならないか

そんな風に参考書に書いてありました?
フレームワークではなく、普通のServletでしたら、/servletは必須ではないですよ。
こうでなければいけない、という決まりはないので、説明があまりないのじゃないでしょうか?

参考にされた例では、jspではなく、servletを起動する場合にわかりやすくしようという意図なのか、よくわかりませんが、そのようにしていたというだけです。

アプリケーションのベースのURLのパスを、サーバで定義していると思います。
例えば、http://localhost:8080/MyProject/ というURLを指定すると、
welcomeに定義された、http://localhost:8080/MyProject/index.jsp が動くようなプロジェクトだとします。

このとき、ユーザが、
http://localhost:8080/MyProject/hiho と打ったら、HelloWorldクラスが動くようにしよう、と思ったら、
<url-pattern>/hiho</url-pattern>
と書きます。

こんなこともできるよ、という下の例は、応用編なので、入門書には説明していないのかと思いますが、
ワイルドカードも使えます。

もし、<url-pattern>/hello/*</url-pattern>としたら、
http://localhost:8080/MyProject/hello/aaa と打っても、http://localhost:8080/MyProject/hello/bbb としても、
HelloWorldクラスを起動します。

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる