Tecnología web con J2EE
Introducción

La Web dinámica se ha desarrollado desde un sistema de información distribuido (HTML) basado en red que ofrecía información estática hasta un conjunto de portales y aplicaciones en Internet que ofrecen un conjunto variado de servicios.

Primera generación

Las soluciones de primera generación incluyeron CGI, que es un mecanismo para ejecutar programas externos en un servidor web.

Segunda generación

Las soluciones de segunda generación incluyeron vendedores de servidores Web que proporcionaban plug-ins y APIs para sus servidores.

Tercera generación

Las páginas JSP son una solución de tercera generación que se pueden combinar fácilmente con algunas soluciones de la segunda generación, creando el contenido dinámico, y haciendo más fácil y más rápido construir las aplicaciones basadas en Web que trabajan con una variedad de otras tecnologías: servidores Web, navegadores Web, servidores de aplicación y otras herramientas de desarrollo.

La tecnología Java Server Pages™ (JSP) nos permite poner segmentos de código servlet directamente dentro de una página HTML estática. Cuando el navegador carga una página JSP, se ejecuta el código del servlet y el servidor de aplicaciones crea, compila, carga y ejecuta un servlet en segundo plano para ejecutar los segmentos de código servlet y devolver una página HTML o imprimir un informe XML.

Modelo cliente-servidor

Cuando se utiliza un servicio en Internet se establece un proceso en el que entran en juego dos partes:

Programa cliente aplicación que ejecuta el usuario en su ordenador local. Este programa cliente se encarga de ponerse en contacto con el ordenador remoto para solicitar el servicio deseado.
Programa servidor programa que se está ejecutando en el ordenador remoto y que responde a la solicitud del cliente.

Los términos cliente y servidor se utilizan tanto para referirse a los programas que cumplen estas funciones, como a los ordenadores donde son ejecutados esos programas.

El programa o los programas cliente que el usuario utiliza para acceder a los servicios de Internet realizan dos funciones distintas:

Lenguajes

En resumen, los programadores de aplicaciones JAVA mediante la especificación J2EE escriben componentes de aplicación J2EE. Un componente J2EE es una unidad de software funcional auto-contenida que se ensambla dentro de una aplicación J2EE y que se comunica con otros componentes de aplicación.

La especificación J2EE define los siguientes componentes de aplicación:
  • Componentes de Aplicación Cliente: Navegador y páginas jsp renderizadas
  • Componentes JavaBeans Enterprise: clases de negocio (EJBs)
  • Componentes Servlets y JavaServer Pages (también llamados componentes Web): clases controladoras
  • Applets: pequeñas aplicaciones que se ejecutan en el cliente
Acceso a datos

Una de las tareas más importantes y más frecuentemente realizadas por los servlets es la conexión a bases de datos mediante JDBC.

JDBC (Java DataBase Connectivity) es una parte del API de Java que proporciona clases para conectarse con bases de datos. Dichas clases forman parte del package java.sql.

Applet / Aplicación Java / Formulario HTML
Máquina cliente
HTTP
Capa intermedia
Servidor Web (+servlets) Controlador JDBC
Máquina servidor
Protocolo de comunicaciones con la base de datos
Controlador de base de datos
Servidor de bd

Este modelo presenta la ventaja de que el nivel intermedio mantiene en todo momento el control del tipo de operaciones que se realizan contra la base de datos, y además, está la ventaja adicional de que los drivers JDBC no tienen que residir en la máquina cliente, lo cual libera al usuario de la instalación de cualquier tipo de driver.

Seguimiento del cliente con servlets

Formas de seguir la trayectoria de los usuarios

Los servlets permiten seguir la trayectoria de un cliente, es decir, obtener y mantener una determinada información acerca del cliente.

Un claro ejemplo de aplicación de esta técnica es el de los comercios vía Internet que permiten llevar un carrito de la compra en el que se van guardando aquellos productos solicitados por el cliente. El cliente puede ir navegando por las distintas secciones del comercio virtual, es decir realizando distintas conexiones HTTP y ejecutando diversos servlets, y a pesar de ello no se pierde la información contenida en el carrito de la compra y se sabe en todo momento que es un mismo cliente quien está haciendo esas conexiones diferentes.

El mantener información sobre un cliente a lo largo de un proceso que implica múltiples conexiones se puede realizar de tres formas distintas:

Introducción a servlets

Introducción a JSP

La tecnología JSP (Java Server Pages) es una especificación abierta desarrollada por Sun Microsystems como un alternativa a Active Server Pages (ASP) de Microsoft, y son un componente dominante de la especificación de Java 2 Enterprise Edition (J2EE).

Esta tecnología permite desarrollar páginas web con contenido dinámico y supone una evolución frente a la tecnología CGI, y los Servlets. Un fichero JSP puede contener etiquetas HTML normales, y elementos especiales para generar el contenido dinámico.

Al mismo tiempo permite una separación en n capas de la arquitectura de la aplicación web y se integra perfectamente con todas las API's empresariales de Java: JDBC, RMI (y CORBA), JNDI, EJB, JMS, JTA,...

Estructura de una página JSP

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.

            <%@ page language="java" contentType="text/html" %>
            <html>
            <head>
            <title>Hola, mundo!!</title>
            </head>
            <body>
            <h1>Hola, mundo!</h1>
            Hoy es <%= new java.util.Date() %>.
            </body>
            </html>
                            
Qué es SPRING?

Spring es un framework de código abierto para la creación de aplicaciones empresariales Java, con soporte para Groovy y Kotlin. Tiene una estructura modular y una gran flexibilidad para implementar diferentes tipos de arquitectura según las necesidades de la aplicación.

DETALLES SOBRE SPRING
Spring funciona sobre JVM

Inicialmente se diseñó para trabajar con Java SE y algunas especificaciones o APIs de Java EE, pero a día de hoy trabaja con el JDK 8 y JDK 9. También podemos trabajar con Groovy y tiene soporte para Kotlin.

Spring tiene estructura modular

Spring ya no es solo un framework para la inyección de dependencias, sino que tiene toda una familia de proyectos que abarcan muchos ámbitos: el ámbito de desarrollo de aplicaciones web, aplicaciones web reactivas, seguridad, servicios web, microservicios, Android, etcétera.

Spring es flexible

Spring nos permitir desarrollar todo tipo de aplicaciones diferentes:

  • Aplicaciones de escritorio, aplicaciones de línea de comando, aplicaciones web clásicas, web reactivas, microservicios…
  • Aplicaciones que acceden a base de datos vía SQL directamente, a través de algún tipo de ORM, bases de datos NoSQL…
  • Aplicaciones con esquemas de seguridad clásica donde almacenamos en nuestra base de datos los elementos de seguridad, clave o credenciales, pero también con otros sistemas.
  • Aplicaciones pequeñas, medianas y grandes, aplicaciones que tienden a ser escalables, aplicaciones que vayamos a gestionar a través de contenedores, aplicaciones que necesitemos desplegar en la nube.
Qué es un framework?

Un framework es:

Si tuviéramos que desarrollar una aplicación web, podríamos utilizar un framework que nos facilite la tarea, que nos aporte soluciones a ese desarrollo. Uno de ellos podría ser, por ejemplo Spring MVC, que nos permitiría crear fácilmente una aplicación web, ya que nos aislaría de determinados problemas, como el hecho de crear servlet o registrar las peticiones, así nos podríamos dedicar a lo que realmente importa.

Qué es una aplicación empresarial?
CARACTERÍSTICAS DE UNA APLICACIÓN EMPRESARIAL
  • Es una gran aplicación, es decir, suele ser bastante amplia y orientada a un ámbito comercial o industrial.
  • Compleja, es decir, con bastantes funcionalidades, con muchos requisitos y que será utilizada por muchas personas, por lo que debería ser escalable, que pueda crecer con el tiempo, es decir, que sí hoy tenemos mil usuarios y dentro de un año tenemos un millón, que no haya que rehacer la aplicación de nuevo.
  • Distribuida, es decir, que incluso la podamos tener deslocalizada en distintos servidores.
  • Crítica, es decir, que no permita o no tolere fallos e incluso, si tuviéramos algún tipo de fallo, que sea capaz de reponerse.
  • Orientada a desplegarse dentro de redes corporativas o, el esquema más usual a día de hoy, en internet a través de la nube.
  • Centrada en los datos, por lo que todas las funcionalidades se suelen desarrollar en torno a los mismos.
  • Intuitiva, de un uso fácil para evitar el rechazo de los usuarios.
  • Suele tener, además, unos grandes requisitos de seguridad y de mantenibilidad.