Les fichiers du dossier /WEB-INF
ne sont en effet pas accessibles au public par enduser. Donc, vous ne pouvez pas avoir quelque chose comme http://localhost:8080/contextname/WEB-INF/some.xhtml
. Ce serait un trou de sécurité potentiel que l'utilisateur final serait en mesure d'afficher parmi d'autres /WEB-INF/web.xml
et ainsi de suite.
Vous pouvez toutefois utiliser le dossier /WEB-INF
pour mettre les fichiers de modèle maître, comprennent les fichiers et les fichiers de balises dans Par exemple, le modèle client page.xhtml
suivant qui est placé à l'extérieur /WEB-INF
et est accessible par 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>
L'avantage de placer des modèles maîtres et d'inclure des fichiers dans /WEB-INF
est que l'utilisateur final ne pourra pas les ouvrir directement en entrant/devinant son URL dans la barre d'adresse du navigateur. Les pages normales et les clients modèles qui sont destinés à être accédés directement ne doivent pas être placés dans le dossier /WEB-INF
. Par ailleurs, les fichiers de composants composites ne sont pas non plus censés être accessibles au public, mais ils doivent être placés par défaut dans le dossier /resources
qui est accessible par défaut au public. Si vous assurez-vous que vous accédez à toutes les ressources en utilisant le therefor provided components afin qu'ils ne sont jamais accessibles par /resources
dans l'URL (mais par /javax.faces.resource
), vous pouvez ajouter la contrainte suivante à web.xml
pour bloquer tous les accès du public au dossier /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>
Ceci est une question en suspens qui touche à de nombreux aspects des facelets. – Thufir