SEMANA 11

Desarrollo con Java JSP y Spring Framework
Semana 11 - Tecnologías Web Empresariales

1. Temas Aprendidos - Definiciones y Conceptos

Apache Tomcat

Apache Tomcat es un contenedor de servlets desarrollado bajo el proyecto Jakarta en la Apache Software Foundation. Implementa las especificaciones de los servlets y de JavaServer Pages (JSP) de Oracle Corporation. Tomcat funciona como un servidor web que puede ejecutar aplicaciones Java web dinámicas.

Estructura de Directorios de Tomcat:

Gestores de Dependencias

Un gestor de dependencias es una herramienta que administra automáticamente las bibliotecas y módulos necesarios en un proyecto de software. En Java, los principales gestores son Maven y Gradle.

Apache Maven

Maven es una herramienta de software libre lanzada en 2002 para gestionar proyectos Java. Se basa en archivos XML y sigue la filosofía de estandarización de estructuras de aplicaciones.

Gestión de dependencias Compilación automática Empaquetado JAR/WAR Generación de documentación

JavaServer Pages (JSP)

JSP es un lenguaje de script del lado del servidor que permite la creación de contenido web dinámico independiente de la plataforma. JSP tiene acceso a toda la familia de APIs de Java, incluyendo JDBC para acceso a bases de datos.

Elementos principales de JSP:

Spring Framework

Spring Framework es un framework robusto para el desarrollo de aplicaciones empresariales en Java. Fue creado con la finalidad de estandarizar el trabajo, resolver y agilizar los problemas que aparecen en el desarrollo empresarial.

Conceptos Clave:

Spring Boot

Spring Boot es una herramienta que permite crear proyectos con Spring Framework eliminando la complejidad de configuraciones e instalación de dependencias, integrando un servidor de pruebas para despliegue en desarrollo.

2. Procedimientos Aprendidos

Configuración del Entorno de Desarrollo

  1. Instalación de OpenJDK:
    • Descargar binarios desde https://openjdk.java.net/
    • Configurar variables de entorno JAVA_HOME y PATH
    • Verificar instalación con java --version
  2. Instalación de Apache Tomcat:
    • Descargar desde http://tomcat.apache.org/
    • Configurar puertos y servicios
    • Inicializar con start.bat
  3. Configuración de IntelliJ IDEA:
    • Importar proyecto Maven
    • Configurar SDK de Java
    • Configurar servidor Tomcat

Desarrollo con Spring Boot

  1. Creación del proyecto:
    • Utilizar https://start.spring.io/ para generar estructura
    • Configurar dependencias (Spring Web, JPA, MySQL)
    • Descargar y descomprimir proyecto
  2. Configuración de la aplicación:
    • Configurar application.properties para MySQL
    • Crear estructura de paquetes (models, controllers, repositories, services)
  3. Implementación del modelo MVC:
    • Crear entidades con anotaciones JPA
    • Implementar repositorios con Spring Data
    • Desarrollar controladores REST

3. Ejercicios de Laboratorio Realizados

Laboratorio 9: Instalación y Configuración

Objetivos:

  • Instalación de OpenJDK y configuración de variables de entorno
  • Instalación y configuración de Apache Tomcat
  • Configuración de IntelliJ IDEA

Ejercicios Desarrollados:

  1. Aplicación JSP básica: Mostrar fecha actual
  2. Formulario JSP: Cálculo de factorial con métodos GET/POST
  3. Sesiones JSP: Contador de visitas usando objetos implícitos
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %> <!DOCTYPE html> <html> <head> <title>Ejemplo JSP</title> </head> <body> <h1>¡Hola desde JSP!</h1> <p>La fecha y hora actual es: <%= new java.util.Date() %></p> </body> </html>

Laboratorio 10: Desarrollo de API con Spring

Objetivos:

  • Creación de proyecto Spring Boot
  • Implementación del patrón MVC
  • Desarrollo de API REST para entidad Estudiante
  • Pruebas con Postman

Componentes Desarrollados:

  1. Modelo Estudiante: Entidad JPA con atributos básicos
  2. Repositorio: Interface que extiende JpaRepository
  3. Controlador REST: Endpoints para operaciones CRUD
@RestController @RequestMapping("/api/estudiantes") public class EstudianteController { @Autowired private EstudianteRepository repo; @GetMapping public List listarTodos() { return repo.findAll(); } @PostMapping public Estudiante agregar(@RequestBody Estudiante estudiante) { return repo.save(estudiante); } }

Práctica Calificada: API de Gestión de Docentes

Funcionalidades Implementadas:

  • CRUD completo para entidad Docente
  • Búsqueda por ciudad específica
  • Filtrado por años de experiencia
  • Cálculo de edad promedio
  • Paginación en listados
  • Validaciones con Bean Validation
  • Documentación con Swagger
  • Manejo global de excepciones

4. Resultados Obtenidos

Competencias Técnicas Adquiridas:

Habilidades Desarrolladas:

5. Reflexión Final

¿Qué Aprendí?

Durante esta unidad de aprendizaje, he adquirido conocimientos profundos sobre el desarrollo de aplicaciones empresariales con Java. El aprendizaje más significativo fue comprender cómo Spring Framework revoluciona el desarrollo Java mediante la inversión de control y la inyección de dependencias, simplificando considerablemente la gestión de objetos y dependencias en aplicaciones complejas.

La progresión desde JSP básico hasta APIs REST completas con Spring Boot me permitió entender la evolución de las tecnologías web Java y cómo cada herramienta resuelve problemas específicos del desarrollo empresarial.

¿Cómo Lo Hice?

Mi proceso de aprendizaje siguió una metodología práctica y progresiva:

  1. Configuración del entorno: Comenzé estableciendo un entorno de desarrollo robusto con todas las herramientas necesarias
  2. Práctica incremental: Desarrollé ejercicios de complejidad creciente, desde JSP básico hasta APIs completas
  3. Experimentación: Modifiqué códigos de ejemplo para entender el comportamiento de cada componente
  4. Documentación: Mantuve registros detallados de configuraciones y soluciones a problemas encontrados
  5. Validación: Probé exhaustivamente cada funcionalidad desarrollada usando herramientas como Postman

Reflexión Metacognitiva

Este proceso de aprendizaje me ha enseñado la importancia de la arquitectura en el desarrollo de software empresarial. Inicialmente, la cantidad de configuraciones y conceptos nuevos (IoC, DI, anotaciones, etc.) resultaba abrumadora, pero gradualmente comprendí que cada elemento tiene un propósito específico en la construcción de aplicaciones escalables y mantenibles.

La experiencia me ha llevado a reflexionar sobre cómo aprendo tecnologías complejas: descubrí que necesito combinar teoría con práctica inmediata, y que los errores de configuración, aunque frustrantes inicialmente, son oportunidades valiosas para profundizar en el funcionamiento interno de las herramientas.

Un aspecto crucial de mi aprendizaje fue desarrollar pensamiento sistémico: entender cómo cada componente (desde la base de datos hasta la presentación) interactúa en un ecosistema más amplio. Esto me ha preparado mejor para abordar problemas complejos de arquitectura de software.

Finalmente, este aprendizaje me ha enseñado la importancia de la documentación y las buenas prácticas. Spring Boot, con su enfoque de "convención sobre configuración", demuestra cómo las decisiones arquitectónicas bien pensadas pueden simplificar significativamente el desarrollo sin sacrificar funcionalidad.

Bibliografía

Libros de Referencia:

Recursos Web Oficiales:

Documentación Técnica: