servlet faces example jsf web.xml facelets url-pattern

example - A veces veo que JSF URL es*.jsf, a veces*.xhtml y algunas veces/faces/*. ¿Por qué?



web xml faces servlet (1)

He intentado aprender JSF y, a veces, veo que la URL es *.jsf y, a veces, es *.xhtml o /faces/* . ¿Alguien puede llenar mi conocimiento, por favor? Cuando creo un JSF usando Facelet, la extensión de archivo es .xhtml , entonces ¿de dónde .jsf extensión de URL .jsf ?


La extensión .jsf es donde se encuentra FacesServlet durante el período JSF 1.2 a menudo mapeado en web.xml .

<servlet-mapping> <servlet-name>facesServlet</servlet-name> <url-pattern>*.jsf</url-pattern> </servlet-mapping>

La extensión .xhtml es del archivo Facelets real tal como lo ha colocado físicamente en el contenido web de su aplicación web, por ejemplo, Webapp/WebContent/page.xhtml .

Si invoca esta página con la extensión .jsf , por ej. http://localhost:8080/webapp/page.jsf FacesServlet , se invocará el page.xhtml , page.xhtml archivo page.xhtml y analizará / renderizará sus componentes JSF. Si no se invoca FacesServlet , el usuario final terminará obteniendo el código fuente XHTML en bruto (que se puede ver con el botón derecho, Ver código fuente ).

Algunas veces se *.faces extensión *.faces o /faces/* foldermapping. Pero esto fue desde atrás en las edades de JSF 1.0 / 1.1. Puedes elegir y utilizar cualquier mapeo al que le gustaría que FacesServlet escuche, incluso si es un *.xyz no dice *.xyz . La página real en sí misma siempre debe tener la extensión .xhtml , pero esto es configurable con el siguiente <context-param> en web.xml :

<context-param> <param-name>javax.faces.DEFAULT_SUFFIX</param-name> <param-value>.xml</param-value> </context-param>

Esto cambiará el FacesServlet para ubicar page.xml de (predeterminado) page.xhtml .

Más recientemente, con JSF / Facelets 2.0 se *.xhtml asignación *.xhtml . En JSF / Facelets 1.x no fue posible usar la misma extensión de mapeo que el archivo físico. Daría como resultado un ciclo infinito. Pero desde JSF / Facelets 2.0 es posible y esto le permite llamar a la página http://localhost:8080/webapp/page.xhtml .

<servlet-mapping> <servlet-name>facesServlet</servlet-name> <url-pattern>*.xhtml</url-pattern> </servlet-mapping>

De esta forma, no es necesario configurar algunas restricciones de seguridad para ocultar los archivos fuente brutos en los casos en que el usuario .jsf cambie, por ejemplo, .jsf en la URL a .xhtml en la barra de direcciones del navegador. Solo las herramientas (IDEs y complementos) y los recursos de aprendizaje aún necesitan ponerse al día con el movimiento recomendado de *.jsf a *.xhtml . Según JSF 2.3, FacesServlet se FacesServlet automáticamente también en *.xhtml (junto a /faces/* , *.faces y *.jsf ). Esto se transfiere a Mojarra 2.2.11.

Ver también: