Quali file XHTML devo inserire / WEB-INF e quali no?

Dopo queste domande:

  • https://stackoverflow.com/questions/8589315/jsf2-dynamic-template
  • Ui dinamico: include
  • Come posso recuperare un object su @WindowScoped?
  • Come posso verificare se un object archiviato con @WindowScoped è archiviato correttamente?
  • ICE Facce e errore nella creazione di un bean in WindowScoped

che ho scritto tutto per risolvere un problema “stupido” per il framework JSF2, il fatto che non posso collegarmi direttamente a una pagina memorizzata in una sottocartella /WEB-INF . Dopo di che ho fatto qualche ricerca su Google e StackOverflow avrei saputo una cosa: come strutturare un progetto web JSF2?

In particolare, dove esattamente metto le pagine XHTML?

La cartella Files in /WEB-INF non è accessibile 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.

È tuttavia ansible utilizzare la cartella /WEB-INF per inserire i file modello principale, includere file e file di tag in. Ad esempio, il seguente modello client page.xhtml che si trova all’esterno /WEB-INF ed è accessibile da http://localhost:8080/contextname/page.xhtml :

   ...  ...   

Il vantaggio di inserire modelli master e includere file in /WEB-INF è 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 dovrebbero essere pubblicamente accessibili, tuttavia sono specificati per essere collocati nella cartella /resources che per impostazione predefinita è accessibile pubblicamente. Se si accerta di accedere a tutte le risorse utilizzando i relativi componenti forniti in modo tale che non vengano mai raggiunti da /resources nell’URL (ma invece da /javax.faces.resource ), è ansible aggiungere il seguente vincolo a web.xml per bloccare tutti gli accessi pubblici alla cartella /resources :

  Restrict direct access to the /resources folder.  The /resources folder. /resources/*