¿Cuál es la diferencia entre JSF, Servlet y JSP?

¿Qué relación existe entre JSP y Servlet? ¿Es JSP un tipo de Servlet? ¿Qué relación existe entre JSP y JSF? ¿Es JSF un tipo de JSP basado en la interfaz de usuario como ASP.NET-MVC?

Solución

JSP (JavaServer Pages)

JSP es una tecnología de vista Java que se ejecuta en la máquina del servidor y que permite escribir plantillas en lenguajes del lado del cliente (como HTML, CSS, JavaScript, ect.). JSP admite taglibs, que están respaldados por piezas de código Java que permiten controlar el flujo o la salida de la página de forma dinámica. Un taglib muy conocido es JSTL. JSP también admite Expression Language, que puede utilizarse para acceder a los datos del backend (a través de los atributos disponibles en los ámbitos de la página, la solicitud, la sesión y la aplicación), sobre todo en combinación con las taglibs. Cuando se solicita una JSP por primera vez o cuando la aplicación web se inicia, el contenedor de servlets la compilará en una clase que extienda HttpServlet y la utilizará durante la vida de la aplicación web. Puedes encontrar el código fuente generado en el directorio de trabajo del servidor. En, por ejemplo, Tomcat, es el directorio /work. En una petición JSP, el contenedor de servlets ejecutará la clase JSP compilada y enviará la salida generada (normalmente sólo HTML/CSS/JS) a través del servidor web sobre una red al lado del cliente, que a su vez lo muestra en el navegador web.

Servlets

Los servlets son una interfaz de programación de aplicaciones (API) de Java que se ejecuta en la máquina del servidor y que intercepta las peticiones realizadas por el cliente y genera/envía una respuesta. Un ejemplo bien conocido es el HttpServlet que proporciona métodos para enganchar las peticiones HTTP utilizando los populares métodos HTTP como GET y POST. Puedes configurar HttpServlets para escuchar un determinado patrón de URL HTTP, que es configurable en web.xml, o más recientemente con Java EE 6, con la anotación @WebServlet. Cuando se solicita un servlet por primera vez o durante el inicio de la aplicación web, el contenedor de servlets creará una instancia del mismo y la mantendrá en memoria durante la vida de la aplicación web. La misma instancia se reutilizará para cada solicitud entrante cuya URL coincida con el patrón de URL del servlet. Puedes acceder a los datos de la petición mediante HttpServletRequest y manejar la respuesta mediante HttpServletResponse. Ambos objetos están disponibles como argumentos de métodos dentro de cualquiera de los métodos overridden de HttpServlet, como doGet() y doPost().

JSF (JavaServer Faces)

JSF es un marco MVC basado en componentes que está construido sobre la API de Servlet y proporciona componentes a través de taglibs que pueden ser utilizados en JSP o cualquier otra tecnología de vista basada en Java como Facelets. Facelets es mucho más adecuado para JSF que para JSP. En concreto, proporciona grandes capacidades de plantillas como los componentes compuestos, mientras que JSP básicamente sólo ofrece el `` para la creación de plantillas en JSF, por lo que te ves obligado a crear componentes personalizados con código Java en bruto (que es un poco opaco y un trabajo muy tedioso) cuando quieres sustituir un grupo repetido de componentes por un único componente. Desde JSF 2.0, JSP ha quedado obsoleta como tecnología de vista en favor de Facelets.
Nota: JSP en sí mismo NO está obsoleto, sólo la combinación de JSF con JSP está obsoleta. *Nota: JSP tiene una gran capacidad de plantillas por medio de Taglibs, especialmente la variante (Tag File). Lo que falta es el templado de JSP en combinación con JSF. Al ser un framework MVC (Modelo-Vista-Controlador), JSF proporciona el FacesServlet como único Controlador de petición-respuesta. Te quita todo el trabajo estándar y tedioso de petición/respuesta HTTP de tus manos, como recoger la entrada del usuario, validarla/convertirla, ponerla en objetos modelo, invocar acciones y renderizar la respuesta. De este modo, se acaba teniendo básicamente una página JSP o Facelets (XHTML) para Ver y una clase JavaBean como Modelo. Los componentes JSF se utilizan para enlazar la vista con el modelo (como hace el control web de ASP.NET) y el FacesServlet utiliza el árbol de componentes JSF* para hacer todo el trabajo.

Preguntas relacionadas

Comentarios (12)

Ver http://www.oracle.com/technetwork/java/faq-137059.html

La tecnología JSP forma parte de la familia tecnológica Java familia tecnológica. Las páginas JSP son compiladas en servlets y pueden llamar a componentes componentes JavaBeans (beans) o componentes Enterprise JavaBeans (enterprise beans) para realizar procesamiento en el servidor. Como tal, la tecnología JSP tecnología es un componente clave en una arquitectura altamente escalable para aplicaciones basadas en la web.

Véase https://jcp.org/en/introduction/faq

R: La tecnología JavaServer Faces es un marco de trabajo para construir interfaces de usuario para aplicaciones web. La tecnología JavaServer Faces tecnología incluye:

Un conjunto de APIs para: representar componentes componentes y gestionar su estado, manejar eventos y validación de entradas, definir la navegación de la página, y definir la navegación de la página, y > soportar la internacionalización y la accesibilidad.

Una etiqueta personalizada de JavaServer Pages (JSP) biblioteca para expresar una interfaz JavaServer interfaz de JavaServer Faces dentro de una página JSP.

JSP es un tipo especializado de servlet.

JSF es un conjunto de etiquetas que se pueden utilizar con JSP.

Comentarios (1)

es cierto que JSP se convierte en servlet en el momento de la ejecución, y JSF es algo totalmente nuevo para hacer la página web más legible ya que JSF permite escribir todas las estructuras de programación en forma de etiqueta.

Comentarios (0)