¿Cuál es la diferencia entre la creación de páginas JSF con.jsp or.xhtml or.extensión jsf


Vi algunos ejemplos creando las páginas JSF con la extensión .jsp, otros ejemplos creándolas con la extensión .xhtml, y otros ejemplos eligen .jsf. Solo me gustaría saber cuál es la diferencia entre las extensiones anteriores cuando se trabaja con páginas JSF, y cómo elegir la extensión adecuada?

Author: BalusC, 2011-10-27

2 answers

JSP es una tecnología de vista antigua y ampliamente utilizada en combinación con JSF 1.x. Facelets (por algunas personas generalizadas como XHTML) es el sucesor de JSP e introducido como tecnología de vista predeterminada de JSF 2.x a finales de 2009. Cuando estaba viendo JSP, quizás estaba leyendo libros obsoletos, tutoriales o recursos dirigidos a JSF 1.x. Generalmente debe ignorarlos al desarrollar con JSF 2.x and head to resources targeted on JSF 2.x, de lo contrario puede terminar en confusión porque muchas cosas se hacen de manera diferente en JSF 2.x en las facetas.

El *.jsf es solo uno de los patrones de URL ampliamente utilizados de la asignación FacesServlet en web.xml. Otros son *.faces y /faces/*, pero son de las edades JSF 1.0/1.1. Todos ellos no representan la extensión/ruta de archivo concreta, sino solo una extensión/ruta de archivo virtual y debe especificarse en las URL solo como so http://example.com/contextname/page.jsf. Si usted está familiarizado con los Servlets básicos , entonces usted debe saber que el servletcontainer invocará el servlet cuando la URL de solicitud coincida con el patrón de URL del servlet. Así que cuando la URL de la solicitud coincide con *.jsf, entonces el FacesServlet se invocará de esta manera. Al usar JSPs, realmente ejecutaría page.jsp. Al usar Facelets, esto compilaría page.xhtml.

Desde JSF 2.x también puede usar *.xhtml como patrón de URL. De esta manera no necesitas confundirte al especificar URLs. Usar *.xhtml como patrón de URL no era posible en JSF 1.x con Facelets 1.x, porque el FacesServlet entonces correría en un bucle infinito llamándose a sí mismo cada vez. Una ventaja adicional de usar *.xhtml es que el usuario final no podrá ver el código fuente JSF sin procesar siempre que el usuario final cambie a propósito la extensión URL en la barra de direcciones del navegador de por ejemplo .jsf a .xhtml. No es posible usar *.jsp como patrón de URL, porque de esta manera el contenedor builtin JspServlet, que ya está usando ese patrón de URL, se anularía y luego el FacesServlet no ser capaz de alimentarse de JSPs más.

Véase también:

 54
Author: BalusC,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 11:53:53

.jsp los archivos se utilizan generalmente para vistas JSF definidas usando páginas JavaServer. .xhtml los archivos se usan generalmente para vistas JSF definidas usando Facelets.

Esto se puede cambiar a través de la configuración (por ejemplo, consulte los parámetros de configuración javax.faces.DEFAULT_SUFFIX y javax.faces.FACELETS_SUFFIX.)

Otras asignaciones de extensiones(*.jsf, *.faces) tienden a ser utilizados para el procesamiento de solicitudes a través de la FacesServlet. Esta es una asignación lógica a la vista que el tiempo de ejecución de JSF manejará. Cómo se manejan las asignaciones se define en el web.xml (que no tiene que hacerse usando extensiones; el mapeo /faces/* se usa a menudo.

De la especificación:

Mapeo de Servlet

Todas las solicitudes a una aplicación web se asignan a un servlet en particular basado en la coincidencia de un patrón de URL (como se define en el Servlet Java Especificación) contra la porción de la URL de la solicitud después del ruta de contexto que seleccionó esta aplicación web. JSF las implementaciones deben admitir aplicaciones web que definan un <servlet-mapping> que mapea cualquier url-patrón válido para el FacesServlet. Se puede utilizar la asignación de prefijos o extensiones. Al usar asignación de prefijos, se recomienda la siguiente asignación, pero no requerido:

<servlet-mapping>
<servlet-name> faces-servlet-name </servlet-name>
<url-pattern>/faces/*</url-pattern>
</servlet-mapping>

Cuando se utiliza la asignación de extensión se recomienda la siguiente asignación, pero no se requiere:

<servlet-mapping>
<servlet-name> faces-servlet-name </servlet-name>
<url-pattern>*.faces</url-pattern>
</servlet-mapping>

Además de FacesServlet, las implementaciones de JSF pueden soportar otros formas de invocar el ciclo de vida del procesamiento de solicitudes de caras de JavaServer, pero las aplicaciones que se basan en estos mecanismos no ser portátil.

 11
Author: McDowell,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-10-27 10:55:17