¿Qué problemas resuelve Struts2?
Struts 2 es la próxima generación de Struts. Es un nuevo marco Struts 2 lanzado basado en la fusión de las tecnologías Struts y WebWork. Su nueva arquitectura Struts 2 es muy diferente de la arquitectura Struts 1. Struts 2 toma WebWork como núcleo y utiliza un mecanismo interceptor para manejar las solicitudes de los usuarios. Este diseño también permite que el controlador de lógica de negocios esté completamente separado de la API de Servlet, por lo que Struts 2 puede entenderse como un producto actualizado de WebWork. Porque los cambios entre Struts 2 y Struts 1 son demasiado grandes, pero en comparación con WebWork, Struts 2 solo tiene pequeños cambios.
El sistema Struts 2 es muy diferente del sistema Struts 1 porque Struts 2 utiliza el núcleo de diseño de WebWork en lugar del núcleo de diseño de Struts 1. Struts 2 hace un uso intensivo de interceptores para manejar las solicitudes de los usuarios, lo que desacopla el controlador de lógica de negocios del usuario de la API de Servlet. El navegador envía la solicitud. El controlador central FilterDispatcher determina la acción apropiada a llamar en función de la solicitud. La cadena de interceptores de WebWork aplica automáticamente funciones comunes a las solicitudes, como la validación. Devolución de llamada al método de ejecución de la Acción, que realizará alguna acción en función de los parámetros solicitados. El método de ejecución de Acción generará salida de información al navegador, admitiendo múltiples formas de vistas.
Al implementar Action.Net, se deben extender los requisitos de Struts1: Struts1 requiere que se extienda desde la clase Action, mientras que Struts2 puede ser un POJO ordinario: la acción de Struts1 funciona en modo singleton. una acción La instancia maneja todas las solicitudes. Una solicitud corresponde a una instancia. No hay ningún problema de seguridad de subprocesos: la acción Struts1 se basa en la API de servlet. Por ejemplo, los parámetros del método de ejecución de la acción incluyen objetos de solicitud y respuesta. La acción en Struts2 ya no depende de la API de Servlet, lo que favorece las pruebas y la implementación de TDD. Encapsulación de parámetros de solicitud: Struts1 fuerza el uso de objetos ActionForm para encapsular los parámetros de solicitud. Struts2 puede optar por utilizar clases POJO para encapsular los parámetros de solicitud, o puede utilizar directamente los atributos de Acción. Lenguaje de expresión: Struts1 integra EL, pero EL no tiene un soporte sólido para colecciones e índices. Struts2 integra OGNL (Object Graph Markup Language). Valores vinculantes para ver tecnologías: Struts1 usa JSP estándar, Struts2 usa tecnología "ValueStack". Conversión de tipo: ActionForm de Struts1 básicamente usa atributos de tipo String, mientras que Struts2 usa OGNL para la conversión, lo que será más conveniente de usar. Validación de datos: Struts1 admite la sobrecarga del método de validación o el uso del marco de validación Validator, y Struts2 admite la sobrecarga del método de validación o el uso del marco de validación XWork. Comparar control de ejecución de acciones: Struts1 admite el procesamiento de una solicitud para cada módulo, pero todas las acciones del módulo deben compartir la misma declaración. Struts2 admite la creación de diferentes bucles de declaración para cada Acción a través de la pila de interceptores.
Hasta cierto punto, Struts2 es una versión mejorada de WebWork2. Incluso la documentación oficial de Apache dice que WebWork2 a Struts2 es una transición sin problemas. Incluso podemos decir que Struts2 es solo una versión mejorada de WebWork2.3.
En muchos sentidos, Struts es simplemente WebWork con un nombre diferente.