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

856

Tengo algunas preguntas. Estos son :

  1. ¿Cómo se relacionan JSP y Servlet entre sí?
  2. ¿JSP es una especie de servlet?
  3. ¿Cómo se relacionan JSP y JSF entre sí?
  4. ¿Es JSF algún tipo de JSP basado en UI precompilado como ASP.NET-MVC?
1
  • 3
    En JSF 2.0+, xml no es necesario. 28 de enero de 2016 a las 8:51
1261

JSP (páginas de JavaServer)

JSP es una tecnología de vista de Java que se ejecuta en la máquina del servidor y le permite escribir texto de plantilla en lenguajes del lado del cliente (como HTML, CSS, JavaScript, etc.). JSP admite taglibs , que están respaldados por fragmentos de código Java que le permiten controlar el flujo de la página o la salida de forma dinámica. Un taglib muy conocido es JSTL . JSP también es compatible con Expression Language , que se puede utilizar 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), principalmente en combinación con taglibs.

Cuando se solicita una JSP por primera vez o cuando se inicia la aplicación web, el contenedor de servlets la compilará en una clase que se extenderá HttpServlety la utilizará durante la vida útil de la aplicación web. Puede encontrar el código fuente generado en el directorio de trabajo del servidor. En, por ejemplo , Tomcat , es el /workdirectorio. En una solicitud JSP, el contenedor de servlets ejecutará la clase JSP compilada y enviará la salida generada (generalmente solo HTML / CSS / JS) a través del servidor web a través de una red al lado del cliente, que a su vez lo muestra en el navegador web.

Servlets

Servlet es una interfaz de programación de aplicaciones (API) de Java que se ejecuta en la máquina del servidor, que intercepta las solicitudes realizadas por el cliente y genera / envía una respuesta. Un ejemplo bien conocido es el HttpServletque proporciona métodos para conectar solicitudes HTTP utilizando los métodos HTTP populares como GETy POST. Puede configurar los HttpServletmensajes de correo electrónico para escuchar un determinado patrón de URL HTTP, que se puede configurar en web.xml, o más recientemente con Java EE 6 , con @WebServletanotación.

Cuando se solicita un servlet por primera vez o durante el inicio de la aplicación web, el contenedor de servlet creará una instancia del mismo y lo mantendrá en la memoria durante la vida útil 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. Puede acceder a los datos de la solicitud HttpServletRequesty gestionar la respuesta mediante HttpServletResponse. Ambos objetos están disponibles como argumentos de método dentro de cualquiera de los métodos anulados de HttpServlet, como doGet()y doPost().

JSF (Caras de JavaServer)

JSF es un marco MVC basado en componentes que se construye sobre la API de Servlet y proporciona componentes a través de taglibs que se pueden usar en JSP o en cualquier otra tecnología de vista basada en Java, como Facelets . Facelets se adapta mucho más a JSF que a JSP. Es decir, proporciona excelentes capacidades de creación de plantillas , como componentes compuestos , mientras que JSP básicamente solo ofrece la <jsp:include>creación de plantillas en JSF, por lo que se ve obligado a crear componentes personalizados con código Java sin procesar (que es un poco opaco y mucho trabajo tedioso) cuando desea reemplazar un grupo repetido de componentes con un solo componente. Desde JSF 2.0, JSP ha quedado obsoleto como tecnología de visualización en favor de Facelets.

Nota : JSP en sí NO está en desuso, solo la combinación de JSF con JSP está en desuso.

Nota : JSP tiene grandes capacidades de creación de plantillas mediante Taglibs, especialmente la variante ( Tag File ). La creación de plantillas JSP en combinación con JSF es lo que falta.

Al ser un marco MVC ( Model-View-Controller ), JSF proporciona FacesServletcomo único controlador de solicitud-respuesta . Toma todo el trabajo estándar y tedioso de solicitud / respuesta HTTP de sus manos, como recopilar la entrada del usuario, validarlos / convertirlos, colocarlos en objetos modelo, invocar acciones y representar la respuesta. De esta manera, terminas básicamente con una página JSP o Facelets (XHTML) para View y una clase JavaBean como modelo . Los componentes JSF se utilizan para vincular la vista con el modelo (como lo hace su control web ASP.NET) y FacesServletutiliza el árbol de componentes JSF para hacer todo el trabajo.

Preguntas relacionadas

11
  • @BalusC: He visto este tipo de código usado en jsp en lugar de código java - <c: forEach items = "$ {items}"> <jsp: attribute name = "var"> <mytag: doesSomething /> </ jsp : atributo> ¿Qué es esto?
    Ashwin
    23/04/12 a las 6:40
  • 8
    @Shashank: No del todo. Solo la <c:forEach>etiqueta es de JSTL. Consulte también stackoverflow.com/tags/jstl/info
    BalusC
    29/09/12 a las 11:22
  • 1
    Si. <mytag:doesSomething/>parece una etiqueta personalizada y <jsp:attribute>una etiqueta jsp. 29/09/12 a las 11:43
  • 4
    Dado que esta es una respuesta muy popular, quiero agregar un bit muy importante que son los archivos de etiquetas JSP que permiten la creación de etiquetas personalizadas para la composición y el diseño de la página sin escribir código Java. Esta función es extremadamente útil y ha sido parte del estándar durante muchos años, pero sigue estando infrautilizada.
    jiggy
    1 de septiembre de 2014 a las 20:41
  • 1
    @johnny Facelets ha sido la tecnología de visualización preferida desde que se lanzó Java EE 6 en 2009 ( docs.oracle.com/javaee/6/tutorial/doc/giepx.html ). El conjunto mínimo de tecnologías para desarrollar aplicaciones web Java no es más alto que el de la mayoría de los otros lenguajes, pero hay muchas más opciones y competidores, lo que confunde a los recién llegados. ¿Desarrollo web en Ruby? La primera opción es obvia.
    DavidS
    10 de septiembre de 2014 a las 0:11
87

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

JSP technology is part of the Java technology family. JSP pages are compiled into servlets and may call JavaBeans components (beans) or Enterprise JavaBeans components (enterprise beans) to perform processing on the server. As such, JSP technology is a key component in a highly scalable architecture for web-based applications.

Ver https://jcp.org/en/introduction/faq

A: JavaServer Faces technology is a framework for building user interfaces for web applications. JavaServer Faces technology includes:

A set of APIs for: representing UI components and managing their state, handling events and input validation, defining page navigation, and supporting internationalization and accessibility.

A JavaServer Pages (JSP) custom tag library for expressing a JavaServer Faces interface within a JSP page.

JSP es un tipo de servlet especializado.

JSF es un conjunto de etiquetas que puede utilizar con JSP.

1
  • 8
    "JSP es un tipo de servlet especializado. JSF es un conjunto de etiquetas que puede utilizar con JSP". ¡Esta declaración describe mejor la relación entre los tres!
    lfree
    11 mar 16 a las 4:30
34

Desde la perspectiva del navegador / cliente

JSP y JSF tienen el mismo aspecto, según los requisitos de la aplicación, JSP es más adecuado para aplicaciones basadas en solicitudes y respuestas.

JSF está diseñado para aplicaciones web basadas en eventos más ricas. Veo el evento como mucho más granular que la solicitud / respuesta.

Desde la perspectiva del servidor

La página JSP se convierte en servlet y tiene un comportamiento mínimo.

La página JSF se convierte en un árbol de componentes (mediante FacesServlet especializado) y sigue el ciclo de vida de los componentes definido por la especificación.

24

Servlets :

The Java Servlet API enables Java developers to write server-side code for delivering dynamic Web content. Like other proprietary Web server APIs, the Java Servlet API offered improved performance over CGI; however, it has some key additional advantages. Because servlets were coded in Java, they provides an object-oriented (OO) design approach and, more important, are able to run on any platform. Thus, the same code was portable to any host that supported Java. Servlets greatly contributed to the popularity of Java, as it became a widely used technology for server-side Web application development.

JSP :

JSP is built on top of servlets and provides a simpler, page-based solution to generating large amounts of dynamic HTML content for Web user interfaces. JavaServer Pages enables Web developers and designers to simply edit HTML pages with special tags for the dynamic, Java portions. JavaServer Pages works by having a special servlet known as a JSP container, which is installed on a Web server and handles all JSP page view requests. The JSP container translates a requested JSP into servlet code that is then compiled and immediately executed. Subsequent requests to the same page simply invoke the runtime servlet for the page. If a change is made to the JSP on the server, a request to view it triggers another translation, compilation, and restart of the runtime servlet.

JSF :

JavaServer Faces is a standard Java framework for building user interfaces for Web applications. Most important, it simplifies the development of the user interface, which is often one of the more difficult and tedious parts of Web application development.
Although it is possible to build user interfaces by using foundational Java Web technologies(such as Java servlets and JavaServer Pages) without a comprehensive framework designedfor enterprise Web application development, these core technologies can often lead to avariety of development and maintenance problems. More important, by the time the developers achieve a production-quality solution, the same set of problems solved by JSF will have been solved in a nonstandard manner. JavaServer Faces is designed to simplify the development of user interfaces for Java Web applications in the following ways:
• It provides a component-centric, client-independent development approach to building Web user interfaces, thus improving developer productivity and ease of use.
• It simplifies the access and management of application data from the Web user interface.
• It automatically manages the user interface state between multiple requests and multiple clients in a simple and unobtrusive manner.
• It supplies a development framework that is friendly to a diverse developer audience with different skill sets.
• It describes a standard set of architectural patterns for a web application.

[ Fuente: referencia completa: JSF ]

2
  • 4
    No fui yo, pero imagino que es porque básicamente copias y pegas una respuesta de un libro.
    mawburn
    31 de julio de 2013 a las 16:09
  • 7
    @Oberon: Gracias por la respuesta. Me tomó un tiempo encontrar las palabras exactas, así que busqué un libro. Si no es apropiado, entonces usted o cualquiera puede sugerirme que anote la respuesta. Estaré encantado de hacerlo. 1 de agosto de 2013 a las 4:21
18

También hay situaciones en las que puede favorecer JSP sobre JSF. La naturaleza de la aplicación debe ser el factor decisivo para elegir la tecnología.

Si tiene una rica interacción de GUI y necesita muchas secuencias de comandos de Java, prefiera JSF. Básicamente, si la arquitectura de su aplicación GUI está orientada a componentes e incluso impulsada como Swing, JSF es la mejor.

Si la aplicación es solo un envío de formulario simple, no se necesita mucha interacción GUI, entonces JSP podría funcionar bien si aprender una nueva tecnología es una sobrecarga y también es innecesario un marco complejo.

13

Servlet: es la capa del lado del servidor de Java.

  • JSP: es un servlet con html
  • JSF: sus componentes se basan en bibliotecas de etiquetas
  • JSP: se convierte en servlet una vez cuando el servidor recibe una solicitud.
2
  • 2
    JSP se convierte en servlet una vez cuando el servidor recibe una solicitud.
    cackle
    14 de mayo de 2011 a las 21:40
  • ... cuando el servidor recibió la PRIMERA solicitud. Almacenamiento en caché de la mente. 27/03/2016 a las 16:33
10

eso 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.

6

La diferencia básica entre Servlets y JSP es que en Servlets escribimos código java y en eso incrustamos código HTML y solo hay caso inverso con JSP. En JSP escribimos código HTML y en eso incrustamos código Java utilizando etiquetas proporcionadas por JSP.

5

Java Server Pages (JSP) es una tecnología Java que permite a los desarrolladores y diseñadores web desarrollar rápidamente y mantener fácilmente páginas web dinámicas y ricas en información que aprovechan los sistemas comerciales existentes. La tecnología JSP separa la interfaz de usuario de la generación de contenido, lo que permite a los diseñadores cambiar el diseño general de la página sin alterar el contenido dinámico subyacente.

Facelets es el primer lenguaje de declaración de páginas no JSP diseñado para JSF (Java Server Faces) que proporcionó un modelo de programación más simple y poderoso para los desarrolladores de JSF en comparación con JSP. Resuelve diferentes problemas que ocurren en JSP para el desarrollo de aplicaciones web.

Aquí hay una tabla que compara las características de scriplets y facelets:

ingrese la descripción de la imagen aquí Fuente

0
JSP:means HTML+Java Code:

JSP tiene su propio ciclo de vida jsp_init () jsp_service () jsp_destroy

Después de la primera solicitud, convierta JSP a un archivo .java. Hay tres tipos de etiquetas que estamos usando
1.) Sin script

<%  %>

Aquí el desarrollador puede declarar todas aquellas cosas que el desarrollador quiere tomar los datos

2.) Etiqueta de expresión

<%=  %>

Aquí el desarrollador puede usar algunos datos relacionados con la impresión

3.) Declaración

<!% %>

Aquí el desarrollador puede declarar algunos datos relacionados con el método.

Servlet:

Servlet tiene su propio ciclo de vida.

init()
service()
destroy()

Después de la primera solicitud, el contenedor leerá los datos del archivo web.xml y luego se mostrará el relleno de bienvenida.
Ahora en adelante, después de realizar la acción, buscará la URL y, después de este proceso, buscará el servlet particular allí mismo. se realizará la operación de servicio.

JSF:

JSF tiene su propia interfaz de usuario y su ciclo de vida puede funcionar de seis maneras,

A)Restore view phase
B)Apply request values phase
C)Process validations phase
D)Update model values phase
E)Invoke application phase
F)Render response phase

Para la interfaz de usuario aquí para la tabla aquí estamos usando una cuadrícula de panel y hay diferentes caras para esto.

Rich Faces
Prime Faces.
-1

Las JSP son el componente de vista de MVC (controlador de vista de modelo). El controlador toma la solicitud entrante y la pasa al modelo, que podría ser un bean que tiene algún acceso a la base de datos. El JSP luego formatea la salida usando HTML, CSS y JavaScript, y la salida luego se envía de vuelta al solicitante.

-1

JSF es un marco avanzado en el que es muy fácil de implementar una arquitectura basada en modelo-vista-controlador (MVC) para proyectos. La principal ventaja de JSF sobre JSP es la fácil representación dinámica de los componentes en el navegador en función de las condiciones y la fácil integración de eventos ajax.

El front-end de la aplicación JSF, es decir, los archivos xhtml son los que se muestran al usuario a través del navegador. Estos archivos xhtml invocan internamente beans administrados, por ejemplo, controladores en los que se escribe la lógica de la aplicación real.

Los controladores invocan internamente varios servicios que se comunican con la base de datos (usando Hibernate o JPA API). Así es como ocurre el flujo en resumen.

JSF también se usa en combinación con RichFaces, que es un marco para dar un aspecto y una sensación ricos a su aplicación web.

JSF + RichFaces + Hibernate / JPA es una buena tecnología para aprender con seguridad.

-2

Jsp también tiene un código de servlet incorporado que no necesita ninguna compilación externa, se puede ejecutar directamente. Los cambios entrarán en vigor en jsp directamente en un navegador.

El servlet debe compilarse (es decir, tendrá una creación de clase específica)

Jsf es un componente de vista de MVC Framework

-2

JSP son las siglas de JAVA SERVER PAGE ........ jsp no es un servlet. Jsp usa código y etiqueta HTML, por lo que no es necesario crear un HTML y un servlet por separado. JSP está desempeñando un papel magnífico en la aplicación web. Servlet es una clase de Java que juega un papel importante para hacer que su página HTML pase de estática a dinámica.

1
-2

Los servlets son los programas Java del lado del servidor que se ejecutan dentro del contenedor web. El objetivo principal del servlet es procesar las solicitudes recibidas del cliente.

Las páginas del servidor Java se utilizan para crear páginas web dinámicas. Los jsp se introdujeron para escribir código java plus html en un solo archivo, lo que no era fácil de hacer en el programa de servlets. Y un archivo jsp se convierte en un servlet java cuando se traduce.

Java Server Faces es un marco web MVC que simplifica el desarrollo de la interfaz de usuario.