Fundamentos de Java EE: JSP, Enterprise Beans y Servicios Web REST
Clasificado en Informática
Escrito el en
español con un tamaño de 6,68 KB
¿Qué es un JSP?
Java Server Pages (JSP) permite separar la lógica de la aplicación de la presentación. La lógica de negocio se mantiene en los servlets, mientras que la presentación dinámica se gestiona con JSP. Las páginas JSP son compiladas por el servidor y ejecutadas como páginas normales. Requieren un servidor compatible, como Apache Tomcat.
Contenido en una JSP
Un archivo JSP es un fichero de texto que se compila en un servlet (pagina.jsp → .java → .class). Se ejecuta en el servidor y devuelve código HTML.
Contiene:
- Etiquetas HTML estándar.
- Etiquetas propias de JSP, como:
<%@ %>(Directivas de configuración)<%! %>(Declaración de variables y funciones)<% %>(Bloque de código Java)<%= %>(Expresiones evaluables en Java)<%-- --%>(Comentarios)
Flujo de ejecución en JSP
Un JSP recibe una petición del cliente, es procesado en el servidor y devuelve una respuesta en HTML dinámico.
Directivas en JSP
Directiva page
Configura la página JSP con atributos como:
- import: Importa paquetes de Java (
<%@ page import="java.sql.*" %>). - session: Habilita la sesión HTTP (true por defecto).
- buffer: Define el tamaño del buffer de salida.
- autoFlush: Indica si el buffer se vacía automáticamente.
- isErrorPage: Indica si la página maneja excepciones.
- errorPage: Define la página de error predeterminada.
- contentType: Especifica el tipo de contenido de respuesta.
- info: Información sobre la página.
Directiva include
Incluye el contenido de la URL especificada en el fichero HTML generado (<%@ include file="header.jsp" %>).
Directiva taglib
Importa librerías de etiquetas y les asigna un nombre de referencia en la página (<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>).
Variables predefinidas en JSP
Definidas por el servidor, accesibles desde cualquier bloque de código:
- request: Contiene los datos de la petición HTTP (
request.getAttribute("var")). - response: Permite modificar la respuesta HTTP (
response.sendRedirect("url")). - session: Administra la sesión del usuario (
session.getValue("beanName")). - out: Escribe en el flujo de salida (
out.println("<br>")). - pageContext: Gestiona el contexto de ejecución de la página JSP (
pageContext.setAttribute("nombre", objeto)). - exception: Captura excepciones en páginas de error (solo accesible si
isErrorPage=true).
¿Qué es un Enterprise Bean?
- Un Enterprise Bean es un componente de servidor que encapsula la lógica de negocio de una aplicación.
- Su finalidad es ser reutilizable y modular, permitiendo crear aplicaciones basadas en componentes.
- Es una evolución natural frente a la programación con RMI puro, facilitando la construcción de sistemas distribuidos complejos de forma más sencilla y mantenible.
Tipos de Enterprise Beans
1. Session Beans
Encapsulan lógica de negocio sin persistencia directa en bases de datos. Existen tres subtipos: Stateful, Stateless, Singleton.
¿Cuándo usar Session Beans?
- Cuando el estado del bean refleja la interacción con un cliente.
- Si necesita guardar información temporal del cliente.
- Cuando actúa como mediador entre el cliente y otros componentes.
- Para orquestar workflows entre varios enterprise beans.
2. Message-Driven Beans (MDB)
Características:
- No son accedidos directamente por clientes, sino que reciben mensajes asíncronos.
- Son similares a los stateless session beans.
- No mantienen estado.
- Todas sus instancias son equivalentes y pueden procesar mensajes de múltiples clientes.
- Su vida útil es corta.
- Aunque no representan datos, pueden acceder a la base de datos.
¿Cuándo usarlos? Cuando se requiere procesamiento asíncrono de mensajes provenientes del servidor.
3. Entity Beans
Deprecated: Sustituido por JPA.
WSDL (Web Services Description Language)
- Es un lenguaje basado en XML que describe lo que hace un servicio web.
- Tiene dos partes:
- Abstracta: qué métodos ofrece, sus parámetros de entrada/salida y tipos.
- Concreta: cómo acceder al servicio (protocolo, formato, ubicación).
Incluye elementos como <definitions>, <types>, <message>, <portType>, <binding> y <service>.
Configuración de Servicios REST y Etiquetas
Etiquetas propietarias
La etiqueta @Path nos permite especificar qué ruta raíz seguirán todas las peticiones HTTP dentro de esta clase.
Implementaremos una función que responda a las peticiones GET usando:
- @GET: especifica el tipo de petición (puede ser @PUT, @POST, @DELETE…).
- @Path: especifica el path que sigue la petición partiendo del @Path de la clase.
- @Produces: define el valor de retorno (texto plano, HTML, JSON, etc.).
Podemos añadir parámetros modificando el @Path como {mensaje} y usando la etiqueta @PathParam en el argumento de la función.
Configuración en web.xml
- Si no se creó durante el Dynamic Web Project, creamos
web.xmlensrc/main/webapp/WEB-INF. - Este fichero contendrá la información de los servlets para especificar qué módulos correr.
- Se configura la clase del servlet (Jersey) y el parámetro de inicialización para especificar el paquete donde se ejecuta el servicio REST.
- En
servlet-mappingmapeamos el servlet a la ruta/rest/*.
Nota: Se recomienda revisar conceptos de sesión, contexto de petición, servlets y el ciclo de vida de un servlet.