Framework Struts 2

Struts es un framework de código abierto (open source) para crear aplicaciones web en Java, basado en el patrón de diseño MVC (Modelo-Vista-Controlador). Aunque existen versiones más modernas, su importancia radica en que es la base tecnológica de sistemas críticos actuales, como la Historia Clínica Electrónica de Aragón (GUHARA).

A continuación, se detallan sus aspectos fundamentales:

1. ¿Para qué sirve Struts?

Su propósito principal es simplificar el desarrollo de aplicaciones web complejas y escalables. Sirve para:

  • Separar responsabilidades: Divide la lógica de negocio, la interfaz de usuario y el control de flujo.
  • Estandarizar el desarrollo: Proporciona una estructura común para que diferentes desarrolladores trabajen de la misma forma.
  • Gestión de formularios: Automatiza la recogida de datos de formularios HTML y su conversión a objetos Java.

2. Componentes principales (MVC)

El funcionamiento de Struts se divide en tres capas:

  • El Modelo (Model): Representa el estado de la aplicación y la lógica de negocio (consultas a base de datos, cálculos). En Struts, suele interactuar con tecnologías como Hibernate o JDBC.
  • La Vista (View): Es lo que ve el usuario. Struts utiliza principalmente archivos JSP (JavaServer Pages) enriquecidos con bibliotecas de etiquetas propias (Taglibs) que facilitan mostrar datos dinámicos.
  • El Controlador (Controller): Es el «cerebro». En Struts 2 (la versión más usada actualmente), el controlador es un FilterDispatcher (un filtro de servlet) que intercepta las peticiones del usuario y las redirige a la acción correspondiente.

3. Conceptos clave de funcionamiento

Para entender cómo se utiliza Struts, hay que conocer estos elementos:

  • Actions (Acciones): Son clases Java que contienen la lógica para procesar una petición específica. Por ejemplo, una LoginAction que verifica credenciales.
  • Resultados (Results): Después de que una Acción se ejecuta, devuelve un código (como «success» o «error»). Struts usa este código para decidir qué página (Vista) debe mostrar al usuario.
  • Interceptores (Interceptors): Son componentes que se ejecutan antes o después de una Acción. Se usan para tareas comunes como la validación de seguridad, el registro de logs (auditoría) o la gestión de excepciones.
  • ValueStack y OGNL: Struts 2 utiliza un «ValueStack» (pila de valores) donde se almacenan los datos de la Acción para que la Vista pueda acceder a ellos fácilmente mediante un lenguaje de expresiones llamado OGNL.

4. ¿Cómo se utiliza? (Flujo de trabajo)

El desarrollo típico en Struts sigue estos pasos:

  1. Configuración: Se define un archivo struts.xml donde se mapean las URLs con las clases Java (Actions).
  2. Petición del usuario: El usuario pulsa un botón o entra en una URL.
  3. Filtrado: El controlador central recibe la petición y busca en el archivo de configuración qué Acción debe ejecutar.
  4. Ejecución: Se ejecuta la lógica de la Acción (interactuando con el Modelo si es necesario).
  5. Navegación: La Acción devuelve un resultado y Struts redirige al usuario a la página JSP (Vista) configurada para ese resultado.

5. ¿Por qué es importante en la Administración Pública?

Muchos sistemas de gran envergadura, como los de salud o justicia, se construyeron sobre Struts debido a su robustez y a que permitía manejar grandes volúmenes de datos de forma estructurada. En el caso de GUHARA, el uso de Struts permite que una aplicación tan masiva sea mantenible, permitiendo actualizaciones modulares sin comprometer la integridad de la historia clínica.