¿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?
804
3
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 comoGET
yPOST
. Puedes configurarHttpServlet
s para escuchar un determinado patrón de URL HTTP, que es configurable enweb.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 medianteHttpServletRequest
y manejar la respuesta medianteHttpServletResponse
. Ambos objetos están disponibles como argumentos de métodos dentro de cualquiera de los métodos overridden deHttpServlet
, comodoGet()
ydoPost()
.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 elFacesServlet
utiliza el árbol de componentes JSF* para hacer todo el trabajo.Preguntas relacionadas
Ver http://www.oracle.com/technetwork/java/faq-137059.html
Véase https://jcp.org/en/introduction/faq
JSP es un tipo especializado de servlet.
JSF es un conjunto de etiquetas que se pueden utilizar con JSP.
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.