Apache Struts 1 es un marco de aplicación web de código abierto para desarrollar aplicaciones web Java EE . Utiliza y amplía la API de Servlet de Java para alentar a los desarrolladores a adoptar una arquitectura modelo-vista-controlador (MVC). Fue creado originalmente por Craig McClanahan y donado a la Fundación Apache en mayo de 2000. Anteriormente se encontraba bajo el Proyecto Apache Jakarta y se conocía como Jakarta Struts , pero se convirtió en un proyecto Apache de alto nivel en 2005.
El marco WebWork surgió de Apache Struts con el objetivo de ofrecer mejoras y refinamientos, manteniendo al mismo tiempo la misma arquitectura general del marco Struts original. Sin embargo, en diciembre de 2005 se anunció que Struts volvería a fusionarse con WebWork. WebWork 2.2 se adoptó como Apache Struts 2 , que alcanzó su primera versión completa en febrero de 2007.
Además de la versión sucesora actual y en constante evolución Struts 2, existe un clon de Struts 1 desde 2022, que actualiza el marco heredado de Struts 1 a una pila compatible con Jakarta EE actual . [1]
En una aplicación web estándar Java EE , el cliente normalmente llamará al servidor a través de un formulario web . La información se envía a un servlet de Java que interactúa con una base de datos y produce una respuesta con formato HTML , o se envía a un documento JavaServer Pages (JSP) que combina código HTML y Java para lograr el mismo resultado. Ambos enfoques suelen considerarse inadecuados para proyectos grandes porque mezclan la lógica de la aplicación con la presentación y dificultan el mantenimiento.
El objetivo de Struts es separar el modelo (lógica de la aplicación que interactúa con una base de datos) de la vista (páginas HTML presentadas al cliente) y el controlador (instancia que pasa información entre la vista y el modelo). Struts proporciona el controlador (un servlet conocido como ActionServlet
) y facilita la escritura de plantillas para la vista o capa de presentación (normalmente en JSP, pero también se admiten XML / XSLT y Velocity ). El programador de aplicaciones web es responsable de escribir el código del modelo y de crear un archivo de configuración central struts-config.xml
que vincula el modelo, la vista y el controlador.
Las solicitudes del cliente se envían al controlador en forma de "Acciones" definidas en el archivo de configuración; si el controlador recibe una solicitud de este tipo, llama a la clase Action correspondiente que interactúa con el código del modelo específico de la aplicación. El código del modelo devuelve un "ActionForward", una cadena que indica al controlador qué página de salida debe enviar al cliente. La información se transmite entre el modelo y la vista en forma de JavaBeans especiales . Una potente biblioteca de etiquetas personalizadas le permite, desde la capa de presentación, leer y escribir el contenido de estos beans sin necesidad de ningún código Java integrado.
Struts está categorizado como un marco de aplicación web basado en solicitudes del Modelo 2. [2]
Struts también admite la internacionalización mediante formularios web e incluye un mecanismo de plantilla llamado "Tiles" que (por ejemplo) permite que la capa de presentación esté compuesta por encabezado, pie de página, navegación de menú y componentes de contenido independientes.