フォルダー内のファイルは、/WEB-INF
実際にはエンドユーザーがパブリックにアクセスすることはできません。したがって、 のようなものを持つことはできませんhttp://localhost:8080/contextname/WEB-INF/some.xhtml
。これは、エンドユーザーが他のユーザーの間で表示できるなど、潜在的なセキュリティ ホールになる可能性があります/WEB-INF/web.xml
。
ただし、/WEB-INF
フォルダーを使用して、マスター テンプレート ファイル、インクルード ファイル、およびタグ ファイルを配置できます。たとえば、次のテンプレート クライアントpage.xhtml
は外部に配置され/WEB-INF
、 からアクセスできますhttp://localhost:8080/contextname/page.xhtml
。
<ui:composition template="/WEB-INF/templates/template.xhtml"
xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets"
>
<ui:define name="content">
...
<ui:include src="/WEB-INF/includes/include.xhtml" />
...
</ui:define>
</ui:composition>
マスター テンプレートとインクルード ファイルを配置することの利点は/WEB-INF
、エンド ユーザーがブラウザーのアドレス バーに URL を入力/推測して直接開くことができないことです。直接アクセスすることを意図した通常のページとテンプレート クライアントは、/WEB-INF
フォルダーに配置しないでください。
ところで、複合コンポーネント ファイルもパブリックにアクセスできるとは想定されていませんが、仕様/resources
により、既定でパブリックにアクセス可能なフォルダーに配置する必要があります。そのために提供されたコンポーネントを使用してすべてのリソースにアクセスし/resources
、URL で (代わりに で)アクセスされないようにする/javax.faces.resource
場合は、次の制約を追加して、フォルダーweb.xml
へのすべてのパブリック アクセスをブロックできます。/resources
<security-constraint>
<display-name>Restrict direct access to the /resources folder.</display-name>
<web-resource-collection>
<web-resource-name>The /resources folder.</web-resource-name>
<url-pattern>/resources/*</url-pattern>
</web-resource-collection>
<auth-constraint />
</security-constraint>