JSF URL が *.jsf である場合もあれば、*.xhtml である場合もあれば、/faces/* である場合もあります。なぜ?
-
26-09-2019 - |
質問
JSF を学ぼうとして、時々 URL が次のようになっているのを目にします。 *.jsf
そして時々そうです *.xhtml
または /faces/*
. 。誰か私の知識を補ってくれませんか?Facelet を使用して JSF を作成すると、ファイル拡張子は次のようになります。 .xhtml
, 、それではどこにありますか .jsf
URL拡張子の由来は?
解決
の .jsf
拡張子は、 FacesServlet
JSF 1.2 期間中のもので、多くの場合、 web.xml
.
<servlet-mapping>
<servlet-name>facesServlet</servlet-name>
<url-pattern>*.jsf</url-pattern>
</servlet-mapping>
の .xhtml
拡張子は 実際の Web アプリの Web コンテンツに物理的に配置した Facelets ファイル。 Webapp/WebContent/page.xhtml
.
このページを次のコマンドで呼び出すと、 .jsf
拡張子、例: http://localhost:8080/webapp/page.jsf
そうして FacesServlet
が呼び出されます。 page.xhtml
ファイルを作成し、その JSF コンポーネントを解析/レンダリングします。もし FacesServlet
が呼び出されないと、エンドユーザーは生の XHTML ソース コードを取得することになります (右クリックすると表示されます)。 ソースを表示).
時々、 *.faces
延長または /faces/*
フォルダーマッピングが使用されます。しかし、これは JSF 1.0/1.1 の時代に遡ります。使用したいマッピングを自由に選択して使用できます FacesServlet
たとえ何も言わなくても聞いてください *.xyz
. 。実際のページ自体には常に .xhtml
拡張子ですが、これは次のように設定できます <context-param>
で web.xml
:
<context-param>
<param-name>javax.faces.DEFAULT_SUFFIX</param-name>
<param-value>.xml</param-value>
</context-param>
これにより、 FacesServlet
見つける page.xml
の代わり (デフォルト) page.xhtml
.
最近では、JSF/Facelets 2.0 で *.xhtml
マッピングが使用されます。JSF/Facelets 1.x では、物理ファイルと同じマッピング拡張子を使用できませんでした。無限ループが発生します。しかし、JSF/Facelets 2.0 以降ではそれが可能になり、次のようにしてページを呼び出すことができます。 http://localhost:8080/webapp/page.xhtml
.
<servlet-mapping>
<servlet-name>facesServlet</servlet-name>
<url-pattern>*.xhtml</url-pattern>
</servlet-mapping>
この方法では、エンドユーザーが変更された場合などに備えて生のソース ファイルを隠すためにセキュリティ制限を設定する必要がなくなります。 .jsf
への URL .xhtml
ブラウザのアドレスバーにあります。推奨されている移行に追いつく必要があるのは、ツール (IDE とプラグイン) と学習リソースだけです。 *.jsf
に *.xhtml
. 。JSF 2.3 によると、 FacesServlet
デフォルトでは自動登録されます *.xhtml
も(隣に) /faces/*
, *.faces
そして *.jsf
)。これは Mojarra 2.2.11 にバックポートされています。
以下も参照してください。
- web.xml URL パターンで正規表現を使用できますか?
- JSF プロジェクトの <welcome-file> を介してデフォルトのホームページを設定する
- JSF は、レンダリングされた HTML 出力ではなく、プレーン/生の XHTML/XML/EL ソースを含む空白/未解析のページを返します。
- .jsp、.xhtml、または .jsf 拡張子を使用して JSF ページを作成する場合の違いは何ですか?
- /WEB-INF に置く必要がある XHTML ファイルとそうでない XHTML ファイルはどれですか?
- FacesServlet <url-pattern> をカスタマイズして .xhtml 拡張子を削除します