Red de conocimiento informático - Problemas con los teléfonos móviles - La conexión y diferencia entre struts2 y struts1

La conexión y diferencia entre struts2 y struts1

Struts2 no es una versión mejorada de struts1, pero hereda el linaje de webwork y absorbe las ventajas de struts1 y webwork.

1. La clase de acción

Struts1 requiere heredar la clase base abstracta, lo cual no es una excusa para usar la programación de clases abstractas

La clase de acción de struts2 puede implementarse. la interfaz de acción. Pero esto no es obligatorio. Cualquier objeto POJO con identificación de ejecución se puede utilizar como struts2

Modo de subproceso 2

La acción de struts1 es modo singleton y debe ser un hilo Seguro. La política singleton restringe el comportamiento de las acciones de struts1 y los recursos de acción deben ser existencialmente seguros o sincronizados.

El objeto de operación struts2 genera una instancia para cada solicitud, por lo que no hay problemas de seguridad de subprocesos.

3. Dependencia del servlet

La acción de struts1 depende en gran medida de la API del servlet. Cuando se llama a la acción, httpservletrequest y httpservletresponse se pasarán al método de ejecución. La acción de struts2 no depende del contenedor. La acción se puede probar por separado. Al mismo tiempo, si necesita httpservletrequest y httpservletresponse, puede utilizar el método get correspondiente de la clase ServletActionContext para obtenerlos.

4.

struts1 usa servlet El método de ejecución de la API es difícil de probar. Aunque puede usar los objetos proporcionados por struts Testcase para realizar pruebas, también es muy problemático

struts2. Struts2 solo necesita implementar una ejecución de cadena pública (), para que la acción se pueda ejecutar desde Implementado en Servlet. Se pueden probar las acciones de Servlet implementadas.

5. Aceptar entradas

struts1 utiliza el objeto actionForm para aceptar entradas. Todas las formas de acción deben heredar la clase base. Debido a que los JavaBeans no se pueden utilizar como formas de acción, los desarrolladores suelen crear clases redundantes para capturar entradas. Aunque Dynamic (Dunabeans) puede crear un formulario de acción tradicional, los desarrolladores pueden crear javabeans duplicados, por lo que aún generará redundancia.

Struts2 usa directamente el atributo de acción como atributo de entrada, eliminando el segundo El objeto, propiedad de entrada Puede ser un objeto rico con sus propias propiedades. Se puede acceder a las propiedades de la acción a través de etiquetas en la página web. Struts2 también admite el modo actionform. Se puede utilizar un amplio conjunto de tipos de objetos, incluidos objetos comerciales, como objetos de entrada/salida. Esta característica modelDriven simplifica las referencias de la biblioteca de etiquetas a objetos de entrada POJO.

6. Lenguaje de expresión

Struts1 integra JSTL, por lo que utiliza el lenguaje de expresión JSTL.

Struts 2 usa JSTL, pero el marco también admite una expresión más grande y flexible llamada Lenguaje de marcado de gráficos de objetos (OGNL).

7. Vincular valores a vistas

Struts 1 utiliza mecanismos JSP estándar para vincular objetos al contexto de la página.

Struts 2 utiliza la biblioteca de etiquetas de tecnología "ValueStack" para acceder a los valores sin vincular la vista al tipo de representación del objeto.

8. Conversión de tipos

La propiedad ActionForm de Struts 1 suele ser una cadena. Struts 1 utiliza conversiones de tipo Commons-Beanutils. La conversión es por clase, no por configuración de instancia.

Struts 2 utiliza conversión de tipo OGNL.

El marco contiene básicamente los mismos convertidores para tipos de objetos y tipos primitivos.

9. Validación

Struts 1 admite la verificación manual a través del método de validación de ActionForm o mediante el validador público extendido. Dentro de la misma clase, las clases pueden tener diferentes contextos de validación, pero no pueden contener subobjetos de validación.

Struts 2 admite la validación manual a través del método de validación y el marco de validación XWork, que admite una secuencia de subpropiedades de validación definidas utilizando el tipo y el contexto estricto de la clase de propiedad de validación.

10 Validación del control de operaciones

Struts 1 admite controladores de solicitudes independientes para cada modelo, pero todas las operaciones en un modelo deben estar en el mismo ciclo de vida*** *.

Struts 2 admite la creación de diferentes ciclos de vida operación por operación a través de pilas de interceptores.

Struts 2 admite la creación de diferentes ciclos de vida operación por operación a través de pilas de interceptores.