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

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 .

  facesServlet *.jsf  

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 en web.xml :

  javax.faces.DEFAULT_SUFFIX .xml  

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 .

  facesServlet *.xhtml  

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:

  • ¿Podemos usar expresiones regulares en patrones de URL web.xml?
  • Establecer la página de inicio predeterminada a través de en el proyecto JSF
  • JSF devuelve una página en blanco / sin analizar con fuente XHTML / XML / EL sin formato / sin formato en lugar de una salida HTML procesada
  • ¿Cuál es la diferencia entre crear páginas JSF con la extensión .jsp o .xhtml o .jsf
  • ¿Qué archivos XHTML necesito poner / WEB-INF y cuáles no?
  • Personaliza FacesServlet para deshacerte de la extensión .xhtml