template ejemplo define jsf jsf-2 facelets web-inf

jsf - ejemplo - ¿Qué archivos XHTML necesito poner/WEB-INF y cuáles no?



ui define (1)

Los archivos en la carpeta /WEB-INF no son públicamente accesibles por el usuario final. Por lo tanto, no puede tener algo como http://localhost:8080/contextname/WEB-INF/some.xhtml . Eso sería un potencial agujero de seguridad ya que el usuario final podría verlo entre otros /WEB-INF/web.xml etc.

Sin embargo, puede usar la carpeta /WEB-INF para colocar archivos de plantillas maestras, incluir archivos y archivos de etiquetas. Por ejemplo, la siguiente plantilla cliente page.xhtml que se encuentra fuera /WEB-INF y es accesible desde 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>

La ventaja de colocar plantillas maestras e incluir archivos en /WEB-INF es que el usuario final no podrá abrirlas directamente ingresando / adivinando su URL en la barra de direcciones del navegador. Las páginas normales y los clientes de plantilla que se pretende acceder directamente no se deben colocar en la carpeta /WEB-INF .

Dicho sea de paso, tampoco se supone que los archivos de componentes compuestos sean de acceso público, sin embargo, por su especificación, se requiere que se coloquen en /resources carpeta /resources que de forma pública es accesible por defecto. Si se asegura de que tiene acceso a todos los recursos utilizando los componentes proporcionados para que nunca sean accedidos por /resources en URL (sino en lugar de / /javax.faces.resource ), puede agregar la siguiente restricción a web.xml para bloquear todo el acceso público a la carpeta /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>

Después de estas preguntas:

que escribí todo para resolver un problema "estúpido" para el marco JSF2, el hecho de que no puedo vincular directamente a una página almacenada en una subcarpeta /WEB-INF . Después de eso investigué un poco sobre Google y Stackoverflow, sabría algo: ¿cómo estructurar un proyecto web JSF2?

En particular, ¿dónde exactamente pongo las páginas XHTML?