Está en la página 1de 10

Introducción

En la actualidad las aplicaciones web son cada vez más sofisticadas y requieren
tecnologías más avanzadas para presentar la información de manera dinámica. Es aquí
donde entran JSP (Java Server Pages) y JSF (Java server Faces) que son dos tecnologías
que admiten la inclusión de código de Java para la evolución del desarrollo de aplicaciones
web.

JSP, está basada en el lenguaje de programación Java y encaminada a facilitar el desarrollo


de sitios web. Mediante el uso de páginas JSP podemos incorporar contenido dinámico en
sitios web mediante código Java embebido, mientras que JSF es mucho más cercana al
estilo Java Swing.

En la presente investigación daremos a conocer de estas dos tecnologías: JSP Y JSPI; qué
son, sus elementos, directivas, acciones, como es la inserción de su código en páginas web
entre otras directrices.

JSP
JSP (JavaServer Pages) es una tecnología que permite incluir código Java en páginas web.
Es el encargado de tomar la página, sustituir el código Java que contiene por el resultado de
su ejecución, y enviarla al cliente. Los JSP son mejores para generar páginas con gran parte
de contenido estático.

¿Qué es un servlet?

 Un servlet es una clase Java (hija de la clase HttpServlet) y corre en el servidor.


 Un servlet que realice la misma función debe incluir gran cantidad de sentencias del
tipo out.println() para producir el HTML.
 Un servlet da servicio a las peticiones de un navegador Web, es decir, recibe la
petición, la procesa y devuelve la respuesta al navegador.
 Un servlet es una clase Java en la que se puede incrustar código HTML.

Funcionamiento de JSP

Para ejecutar las páginas JSP, necesitamos un servidor Web con un contenedor Web que cumpla
con las especificaciones de JSP y de Servlet. El contenedor Web se ejecuta en el servidor Web y
maneja la ejecución de todas las páginas JSP y de los Servlets existentes en ese servidor Web. El
servidor más utilizado es Tomcat.

Una página JSP es básicamente una página Web con HTML tradicional y código Java. La extensión
de fichero de una página JSP es ".jsp" en vez de ".html" o ".htm", y eso le dice al servidor que esta
página requiere un manejo especial que se conseguirá con una extensión del servidor o un plug-in.

A continuación, mostramos lo que sería un simple ejemplo de página JSP, date.jsp, la cual muestra
al ejecutarse, el día y la hora actual:
Este ejemplo contiene HTML tradicional y algún código Java. La etiqueta <% identifica el inicio de
un scriptlet, y la etiqueta %> identifica el final de un scriptlet. Cuando un navegador solicite la
página date.jsp veremos algo similar a esto:

Cuando se llama a una página JSP, será compilada (por el motor JSP) en un Servlet Java. En este
momento el Servlet es manejado por el motor Servlet como cualquier otro Servlet. El motor Servlet
carga la clase Servlet (usando un cargador de clases) y lo ejecuta para crear HTML dinámico y
enviarlo al navegador. Para el ejemplo mostrado, el Servlet crea un objeto Date y lo escribe como
un String en el objeto out, que es el flujo de salida hacia el navegador.

Elementos de JSP

1. Directivas: Dan información global de la página, por ejemplo, importación de


estamentos, página que maneja los errores o cuando la página forma parte de una
sesión.
2. Declaraciones: Sirven para declarar métodos y variables.
3. Scripts de JSP: Es el código Java embebido en la página.
4. Expresiones de JSP: Formatea las expresiones como cadenas para incluirlas en la
página de salida.

Inserción de código en páginas JSP

 Expresiones de la forma <%= expresión %>: en este caso, la expresión se


evalúa, su resultado se convierte a String y se inserta en la salida.

La forma de traducir una expresión a código de servlet es imprimiéndola en out


(mediante una sentencia out.write(expresion)) o similar.

 Scriptlets de la forma <% código %> : el código se ejecuta dentro del método
_jspService del servlet generado.

Si desde un scriptlet se desea escribir algo en ésta, bastará con utilizar el objeto
predefinido out. Un uso común de los scriptlets es hacer que ciertas partes de código
HTML aparezcan o no en función de una condición.

 Declaraciones de la forma <%! código %>: se insertan en el cuerpo del servlet


generado, fuera de sus métodos.

Permiten definir variables o métodos que se insertarán dentro del cuerpo del servlet
generado. Esto da la posibilidad de sobreescribir los métodos jspInit y jspDestroy que
son el equivalente en JSP del init y destroy de los servlets. Las variables declaradas
conservarán su valor entre sucesivas llamadas a la página, ya que son variables
miembro del servlet y no locales al método jspService.

Objetos implícitos de JSP


Directivas de página

 El formato genérico de una directiva es:<%@ directiva atributo="valor" %>


algunas directivas admiten más de un atributo.

Pero existen 3 tipos aparte de directiva general:

 page: tiene varios usos: importar clases de Java, fijar el tipo MIME de la respuesta,
controlar el buffer de salida.
 include: sirve para incluir código en la página antes de que se realice la compilación del
JSP.
 taglib: se emplea cuando el JSP hace uso de etiquetas definidas por el usuario.

Acciones:
 La directiva include permite insertar código en la página antes de que ésta se
transforme en un servlet. De este modo se pueden reutilizar fragmentos de código
JSP o HTML.

Es el equivalente al #include del lenguaje C. su sintaxis es:<%@ include file="fichero"


%> Como el código se incluye en el servlet generado, los fragmentos de código
incluidos pueden tener efecto sobre la página actual. Así, se puede utilizar esta directiva
para definir constantes, generar cabeceras HTTP,

 La acción <jsp:include> permite insertar la salida de otra página JSP. Nótese


que se incluye la salida generada por el código JSP, no el código propiamente dicho.

Esta acción incluye en una página la salida generada por otra perteneciente a la misma
aplicación web. La petición se redirige a la página incluida, y la respuesta que genera se
incluye en la generada por la principal. Su sintaxis es:<jsp:include page="URL
relativa" flush="true|false"/>.El atributo flush especifica si el flujo de salida de la
página principal debería ser enviado al cliente antes de enviar el de la página incluida

 La acción <jsp:plugin> permite incluir applets que hagan uso de Java 2.

Esta acción sirve para incluir, de manera portable e independiente del navegador,
applets que utilicen alguna librería de Java 2 (Swing, colecciones, Java 2D), ya que las
máquinas virtuales Java distribuidas con algunos navegadores relativamente antiguos
(Explorer 5.x, Netscape 4.x,...) son de una versión anterior a Java 2.

 La acción <jsp:forward> sirve para redirigir la petición a otra página JSP

Esta acción se utiliza para redirigir la petición hacia otra página JSP que esté en la
misma aplicación web que la actual. Un ejemplo de su sintaxis básica es:<jsp:forward
page="principal.jsp"/>.La salida generada hasta el momento por la página actual se
descarta (se borra el buffer). En caso de que no se utilizara buffer de salida, se
produciría una excepción.

JSF
JSF es un framework MVC (Modelo-Vista-Controlador) basado en el API de Servlets que
proporciona un conjunto de componentes en forma de etiquetas definidas en páginas
XHTML mediante el framework Facelets. Facelets se define como un elemento
fundamental de JSF que proporciona características de plantillas y de creación de
componentes compuestos. Antes de la especificación actual se utilizaba JSP para componer
las páginas JSF.

JSF utiliza las páginas Facelets como vista, objetos Javabean como modelos y métodos de
esos objetos como controladores. El servlet FacesServlet realiza toda la tediosa tarea de
procesar las peticiones HTTP, obtener los datos de entrada, validarlos y convertirlos,
colocarlos en los objetos del modelo, invocar las acciones del controlador y renderizar la
respuesta utilizando el árbol de componentes.

JSF proporciona las siguientes características destacables:

• Definición de las interfaces de usuario mediante vistas que agrupan componentes


gráficos.
• Conexión de los componentes gráficos con los datos de la aplicación mediante los
denominados beans gestionados.
• Conversión de datos y validación automática de la entrada del usuario.
• Navegación entre vistas.
• Internacionalización
• A partir de la especificación 2.0 un modelo estándar de comunicación Ajax entre la
vista y el servidor
• Framework estándar definido en la especificación Java EE.
• Soporte en todos los servidores de aplicaciones y en las herramientas de desarrollo:
Eclipse, GlassFish, etc.
• Entornos gráficos para desarrollar rápidamente aplicaciones JSF.
• Gran variedad de implementaciones de componentes.
• Fácil integración con frameworks en la capa de negocio y de persistencia: Spring,
JPA, etc.
• Comunidad muy activa en la actualidad; podemos encontrar fácilmente soporte en
foros, artículos, tutoriales, etc.
Tal y como hemos comentado, JSF se ejecuta sobre la tecnología de Servlets y no requiere
ningún servicio adicional, por lo que para ejecutar aplicaciones JSF sólo necesitamos un
contenedor de servlets tipo Tomcat o Jetty. Para entender el funcionamiento de JSF es
interesante compararlo con JSP. Recordemos que una página JSP contiene código HTML
con etiquetas especiales y código Java. La página se procesa en una pasada de arriba a
abajo y se convierte en un servlet. Los elementos JSP se procesan en el orden en que
aparecen y se transforman en código Java que se incluye en el servlet. Una vez realizada la
conversión, las peticiones de los usuarios a la página provocan la ejecución del servlet.

En JSF el funcionamiento es distinto. Una página JSF también contiene etiquetas especiales
y código HTML, pero su procesamiento es mucho más complicado. La diferencia
fundamental con JSP es el resultado del procesamiento interno, en el servidor, de la página
cuando se realiza la petición. En JSP la página se procesa y se transforma en un servlet. En
JSF, sin embargo, el resultado del procesamiento es un árbol de componentes, objetos Java
instanciados el servidor, que son los que posteriormente se encargan de generar el HTML.

Con un poco más de detalle, cuando el usuario realiza una petición a la página JSF se
realizan las siguientes acciones en orden:

• (1) Se procesa la página de arriba abajo y se crea un árbol de componentes JSF en


forma de objetos instanciados de clases del framework JSF.
• (2) Se obtienen los valores introducidos por el usuario y se actualizan los beans
gestionados con ellos.
• (3) Se actualizan los componentes con los valores procedentes de las propiedades de
los beans gestionados.
• (4) Se pide a los componentes que se rendericen, generándose el código HTML que
se envía de vuelta al navegador como resultado de la petición.
• (5) El árbol de componentes JSF se guarda en memoria para que posteriores
peticiones a la misma página JSF no tengan que crearlo, sino que utilicen el
existente

¿Cómo se genera el HTML final de la respuesta a la petición? En JSP el servlet genera el


HTML mediante sentencias embebidas en su código que escriben en el stream de salida. En
JSF, la página HTML se genera como resultado de llamadas a métodos del árbol de
componentes (en JSF se habla de realizar un render del componente). Una ventaja del
enfoque de JSF es que el renderizado de la interfaz de usuario resultante es más flexible.

De hecho, es posible generar con el mismo JSF distinto código para distintos dispositivos.

Por ejemplo, es posible utilizar la misma aplicación JSF para servir páginas a navegadores
web y dispositivos móviles.

Conclusiones
Como conclusión podemos acotar que tanto la JSP como JSF son dos tecnologías muy
útiles y muy usadas a nivel del mundo web. Como todos sabemos el mundo está
atravesando por una era tecnológica donde miles de usuarios a diario visitan sitios web, y
son estas dos tecnologías parte de que todo funcione de una manera correcta a través de la
incorporación de lenguaje Java.

Además, ayudan a los desarrolladores web a crear tanto páginas como aplicaciones web
dinámicas para que los usuarios podamos tener una mejor experiencia a nivel de páginas y
aplicaciones web.

Bibliografía
Jtech. (s.f.). Jtech. Recuperado el 13 de Julio de 2020, de Jtech: http://www.jtech.ua.es/j2ee/2006-
2007/doc/sesion08-apuntes.pdf

Jtech. (s.f.). Jtech. Recuperado el 13 de 07 de 2020, de Jtech:


http://www.jtech.ua.es/j2ee/publico/jsf-2012-13/sesion01-apuntes.pdf

También podría gustarte