web.xmlのurl-patternについて

ホーム フォーラム Q&A「わかりやすいJavaEE」 web.xmlのurl-patternについて

このトピックには2件の返信が含まれ、2人の参加者がいます。4 年前 片岡 さんが最後の更新を行いました。

3件の投稿を表示中 - 1 - 3件目 (全3件中)
  • 投稿者
    投稿
  • #1973 返信

    片岡

    「わかりやすいJavaEE」のガイドにそって、NetBeans IDEとGlassFishサーバーの環境で
    JSFを作成していくと、web.xmlには、以下の記述が追加されます。

    <servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>/faces/*</url-pattern>
    </servlet-mapping>

    この記述は、/faces/*のアドレスを開くと、Faces Servletが呼び出されるという意味だと
    考えています。

    しかし、「わかりやすいJavaEE」のサンプルは、Webルートの直下にindex.xhtmlやoutput.xthmlを作成し、localohost/プロジェクト名/index.xthmlのようなアドレスを開いています。

    web.xmlの記述は/faces/*となっており、Webルート/faces/以下にxhtmlファイルを保管する必要があると思うのですが、Webルートの直下で呼び出すことができるのは何故なのでしょうか。

    初心者の質問で誠に申し訳ないのですが、アドバイスをいただけると助かります。

    よろしくお願いいたします。

    #1974 返信

    t.kawaba
    キーマスター

    お尋ねの件、勘違いされているようです。

    /faces/* は、
    「Webルート/faces/以下にxhtmlファイルを保管する必要がある」と言う意味ではありません。

    「/faces/ が接頭辞として付いているファイルはFacesServlet が処理する」 と言う意味になります。
    したがって、フォルダ構成は例題のようで間違いありません。

    実際、次のように、2通りのやり方で例題を呼び出し、比較してみてください。
    (sample05を使っていますが、他の例題でも同じです)

    ① http://localhost:8080/sample05-01/index.xhtml

    ② http://localhost:8080/sample05-01/faces/index.xhtml

    ①の方法で呼び出すと、faceletsタグ(JSFタグ)がレンダリングされず、不完全な状態でindex.xhtmlが表示されます。
    ②の方法で呼び出すと、きちんとレンダリングされて表示されます。

    これは、①の呼び出しでは、FacesServletがなにも処理をしなかったことを意味します。

    NetBeansからアプリケーションを起動すると、自動的に/faces/を付けてくれます。
    また、GlassFishは、/faces/index.xhtmlを省略したURLをウェブに返しています。

    #1975 返信

    片岡

    回答いただいた内容を読ませていただき、URLは、コンテキストパス/サーブレットパス/拡張パス情報となっており、
    拡張パス情報の部分は、付随的な入力パラメータ」というべき情報で、
    「/faces/ が接頭辞として付いているファイルはFacesServletが処理する」と言う意味であることが分かりました。

    /faces/の後に続く「index.xthml」は、FacesServletへの入力パラメータの位置付けで、
    /index.xhtml、すなわち、sample05-01直下にあるindex.xthmlということだと分かりました。

    やっと第9章まで進んだところですが、これから少しずつ勉強させていただこうと思っております。

3件の投稿を表示中 - 1 - 3件目 (全3件中)
返信先: web.xmlのurl-patternについて
あなたの情報: