I file nella cartella /WEB-INF
non sono accessibili al pubblico da parte dell'utente finale. Quindi non puoi avere qualcosa come http://localhost:8080/contextname/WEB-INF/some.xhtml
. Quello sarebbe un potenziale buco di sicurezza in quanto l'utente finale potrebbe visualizzare tra gli altri /WEB-INF/web.xml
e così via.
È possibile comunque utilizzare la cartella /WEB-INF
per mettere i file di modello di master, includono file e file di tag in Ad esempio, il seguente cliente modello page.xhtml
che si trova al di fuori /WEB-INF
ed è accessibile da 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>
Il vantaggio di posizionare modelli master e includere file in /WEB-INF
consiste nel fatto che l'utente finale non sarà in grado di aprirli direttamente inserendo/indovinando il proprio URL nella barra dei browser. Le normali pagine e i client di template a cui si intende accedere direttamente non devono essere collocati nella cartella /WEB-INF
.
A proposito, anche i file di componenti compositi non devono essere pubblicamente accessibili, tuttavia sono specificati per essere inseriti nella cartella /resources
che è accessibile per impostazione predefinita. Se è assicurarsi che si accede tutte le risorse utilizzando il therefor provided components in modo che essi non sono mai accessibili da /resources
in URL (ma invece da /javax.faces.resource
), allora si può aggiungere il seguente vincolo per web.xml
per bloccare tutto l'accesso del pubblico alla cartella /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>
Questa è una domanda eccezionale che tocca molti aspetti delle facette. – Thufir