servlet mvc entre diferencias diferencia java jsp jsf servlets java-ee

java - mvc - jsp vs jsf diferencias



Java EE 6: JSF vs Servlet+JSP. ¿Debería molestarme en aprender JSF? (5)

En JSF utiliza un Servlet específico (el Servlet de Caras) para manejar todas las solicitudes entrantes y enviarlas a los beans apropiados.

JSF es un marco MVC basado en componentes, mientras que JSP es una tecnología de visualización.
Puede usar JSP con JSF, aunque Facelets es la tecnología de vista preferida.

Estoy tratando de familiarizarme con Java EE 6 leyendo http://java.sun.com/javaee/6/docs/tutorial/doc/gexaf.html . Estoy un poco confundido sobre el uso de JSF.
Por lo general, la forma en que desarrolle mi aplicación web sería, Servlet actuaría como un controlador y JSP actuaría como una Vista en un modelo MVC. Entonces, ¿intenta JSF reemplazar esta estructura? A continuación se encuentra la cita del tutorial anterior:

Los servlets son los más adecuados para la aplicación orientada al servicio y la función de control de la aplicación orientada a la presentación, como la solicitud de despacho
JSF y Facelet son más apropiados para generar marcas como XHTML, y generalmente se usan para aplicaciones orientadas a presentaciones.

No estoy seguro de si entiendo muy bien la cita anterior, ellos no explicaron muy bien qué es orientado a servicios vs orientado a la presentación.

Una aplicación JavaServer Faces puede asignar solicitudes HTTP al manejo de eventos específico del componente y administrar componentes como objetos con estado en el servidor.

¿Algún desarrollador de Java entendido por ahí puede darme una descripción general rápida sobre JSF, JSP y Servlet? ¿Los integro a todos, o los uso en base separada en la aplicación? si es así, ¿qué tipo de aplicación utiliza JSF en contraste con Servlet y JSP?

Una aplicación JavaServer Faces puede asignar solicitudes HTTP al manejo de eventos específico del componente y administrar componentes como objetos con estado en el servidor.

Suena como lo que servlet puede hacer, pero no está seguro de manage components as stateful objects on the server . Ni siquiera estoy seguro de lo que eso significa? Gracias por adelantado.


JSF básicamente le permite desarrollar una aplicación web con solo objetos modelo (JavaBeans) y vistas (páginas JSP / XHTML). Con el JSP / Servlet "simple" tendrá que introducir un montón de código para controlar, preprocesar, procesar, recopilar datos, validar, convertir, escuchar, etc. la solicitud y respuesta HTTP. Y entonces no estoy hablando de refactorizarlo a un grado alto (abstracto) para que también pueda terminar de la misma manera que JSF (solo una clase JavaBean y una página JSP / XHTML por caso de uso).

He publicado una respuesta más detallada sobre el tema aquí: ¿Cuál es la diferencia entre JSF, Servlet y JSP?


JSF proporciona una capa de abstracción con varias responsabilidades, pero lo más importante es que maneja todos los detalles desordenados de formularios HTML y transfiere datos entre páginas web y beans Java POJO (métodos getX, setX), lo cual es notoriamente difícil de hacer bien.

También proporciona navegación y en la última versión de Java EE 6, la compatibilidad rudimentaria con AJAX está disponible, permitiendo actualizaciones simples de la página web a medida que el usuario ingresa datos.

Es posible que le resulte más fácil pensar en ello como una forma de evitar escribir JavaScript usted mismo.


Objetivos del Marco JSF para simplificar la integración del desarrollo de las interfaces de usuario basadas en la web. Como @bozho declaró que puedes mezclar JSP y JSF. Sin embargo, el componente "ver" en JSF es facelets, que se pueden ver como pequeños widgets de UI, que son más o menos autónomos con respecto al estilo DHTML y generación de eventos de JavaScript y devolución de llamada.

"¿Debo molestarme en aprender ...?"

No es seguro. No he visto a JSF tomando tanta fuerza aunque haya existido (al menos en teoría) durante los últimos 5 años.


Si le gusta XML, elija JSF. En caso de que usted sea un fan de actionlistener doPost, doget etc seleccione Servlet y JSP.