サーブレットマッピングのところがまったく理解できません
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さん の説明では
山 で 川 を呼び出せる仕組みがよくわかりません。
(下につづく)
ベストアンサーに選ばれた回答
編集あり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
このQ&Aで解決しましたか?質問する
閉じる
ベストアンサー以外の回答
1〜1件/1件中
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クラスを起動します。
「servlet-name>、url-pattern>」に関する質問
このカテゴリの回答受付中の質問
- EclipseでWebContent直下にあるjspファイルにsrcフォルダ直下にあるjavaファイル...
- Websphere Application Server上でwarファイルのデプロイテストを行っております...
- ssl通信を以下のURLのプログラムを参考に書き、動作も正常ですが、なぜ証明書検証...
- javaのプログラム(eclipseを使用しています) で画像を選択した範囲で円形に表示さ...
- AndroidStudioでエラーが出ていて、どこも「setText」の所が赤くなっています。こ...
- 制御ボタンを押せる画面があります。 この画面とは別に画面の作りは全く同じで制...
- メソッド「JavaScript 」を宣言して番号の横に2のn乗の実数値が小さい順になるよ...
- [Bank. java] 1:public class Bank{ 2: private int money; 3: public void...
このカテゴリの投票受付中の質問
- Javaのプログラムでメール送信において、CC指定から可能するプログラムを教えてく...
- 大学の実習でEclipseを使っているのですがすべての人のためのJavaプログラミング...
- JAVAの質問です 二重ループを使って 1.2.3.4.5 3.4.5.6.7 5.6.7.8.9 と表示させ...
- インスタンスとコンストラクタの関係って何ですか?
- プログラミングに強いお方、お願いします! 至急です!教えてください! Q. Max3...
- javaのプログラミングについて質問です。 for文で引数を指定してその分だけ、1...
- 現在、MySQLとJavaでプログラムを作っているのですが、MySQLからIDを絞込み、その...
- プログラミング得意な方に質問です。 java 左下が直角になる三角形を表示するプ...
- 学校の課題でノベルゲームをJAVAで作りたいのです、ボタンを押したら次の画面に移...
- EclipseでJavaコードをコンパイルしたいのですがエラーが出てしまいます。 プ...
この質問につけられたタグ
カテゴリQ&Aランキング
- 戻る
- 次へ
総合Q&Aランキング
Yahoo!知恵袋カテゴリ
お客様自身の責任と判断で、ご利用ください。
[PR]お得情報


