Red de conocimiento informático - Problemas con los teléfonos móviles - Introducción a Struts2

Introducción a Struts2

¿Qué es Struts?

Aunque Struts se conoce como un marco completamente nuevo, esto es solo relativo a Struts. En comparación con Struts, Struts tiene muchas mejoras revolucionarias, pero no es una versión nueva, sino una evolución de otro marco famoso, WebWork. Hasta cierto punto, Struts no hereda de Struts, sino que hereda de WebWork, o WebWork se deriva de Struts, en lugar de Struts se deriva de Struts, porque Struts es una versión mejorada de WebWork, no un marco completamente nuevo. el rendimiento está garantizado. Struts es un marco web JAVA EE elegante y extensible diseñado para extender todo el ciclo de desarrollo desde el desarrollo hasta el lanzamiento, incluido el mantenimiento.

Apache Struts es el conocido marco WebWork que existe desde hace varios años. Después de varios años de desarrollo independiente, las comunidades WebWork y Struts decidieron fusionarse en una

La diferencia entre Struts y Struts

Clase de acción

◆ Requisitos de Struts. La clase Action hereda de una clase base abstracta. Un problema común en Struts es usar clases abstractas en lugar de interfaces para programación

◆ La clase Action de Struts puede implementar una interfaz Action y otras interfaces para lograr una personalización opcional. Atender. Struts proporciona una clase base ActionSupport para implementar interfaces comunes. No se requiere interfaz de acción. Cualquier objeto POJO marcado con ejecutar se puede utilizar como objeto Struts Action

Modo de subprocesamiento

◆ Struts Action es un singleton y debe ser seguro para subprocesos. La estrategia singleton limita la funcionalidad de Struts Action, por lo que se debe tener cuidado al desarrollarla. Los recursos de acción deben ser seguros para subprocesos o estar sincronizados

◆ El objeto Acción de Struts genera una instancia para cada solicitud, por lo que no hay problemas de seguridad de subprocesos (de hecho, el contenedor de servlets genera una instancia para cada solicitud).

Dependencia del servlet

◆ La acción de Struts depende de la API del servlet, porque cuando se llama a la acción, el usuario no puede usar la API del servlet. HttpServletRequest y HttpServletResponse se pasan al método de ejecución.

◆Struts Action no depende del contenedor, lo que permite probar acciones independientemente del contenedor. Struts Action aún tiene acceso a la solicitud y respuesta iniciales, pero a otros elementos. se reducen o eliminan. Struts Action todavía tiene acceso a la solicitud y respuesta inicial, pero otros elementos se reducen o eliminan, por lo que no es necesario acceder directamente a HttpServetRequest y HttpServletResponse

Comprobabilidad

◆ Problemas principales en probar Struts Action One es que el método de ejecución expone el método de ejecución. El método de ejecución expone la API del servlet (lo que hace que la prueba dependa del contenedor). La extensión de terceros Struts TestCase proporciona un conjunto de objetos simulados de Struts (para pruebas).

◆ Las operaciones de Struts se pueden probar inicializando, estableciendo propiedades y llamando a métodos. La compatibilidad con la inyección de dependencia también facilita las pruebas

Captura de entradas

◆ Struts utiliza objetos ActionForm para capturar entradas. Todos los ActionForms deben heredar de una clase base porque otros JavaBeans no pueden usarse como ActionForms. Los desarrolladores suelen crear clases redundantes para capturar entradas. Se pueden usar Beans dinámicos (DynaBean) en lugar de crear ActionForms tradicionales, pero los desarrolladores pueden volver a describir (crear) un JavaBean existente (esto aún dará como resultado un JavaBean redundante)

◆ Se usarán Struts con propiedades de acción directamente como propiedades de entrada, eliminando la necesidad de un segundo objeto de entrada. Las propiedades de entrada pueden ser tipos de objetos enriquecidos, con sus propias (sub)propiedades a las que se puede acceder a través de etiquetas en la página web. 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 taglib a objetos de entrada POJO

Lenguaje de expresión

◆ Struts está integrado con JSTL y, por lo tanto, utiliza JSTL EL, que tiene objetos básicos, excepto colecciones e índices. Este EL tiene capacidades básicas de recorrido de gráficos de objetos, pero soporte débil para colecciones y propiedades indexadas

◆ Struts puede usar JSTL, pero también admite un lenguaje de expresión más potente y flexible, es decir, el lenguaje de notación de gráficos de objetos (OGNL). )

Vincular el valor a la página (por ejemplo, strong> Vincular el valor a la página

◆ Struts utiliza el mecanismo JSP estándar para vincular el objeto Vincular a la página para acceder

◆ Struts utiliza la tecnología ValueStack para permitir que los lenguajes de marcado accedan a valores sin vincular la página (vista) al objeto. La estrategia ValueStack permite escribir una serie de objetos con el mismo nombre con diferentes propiedades. para reutilizar páginas (vistas)

Conversión de tipos ◆ Las propiedades de Struts ActionForm suelen ser de tipo String Struts usa Commons Beanutils para la conversión de tipos Un convertidor por clase Un convertidor por instancia No configurable

◆ Struts utiliza la tecnología ValueStack para permitir que las bibliotecas de etiquetas accedan a los valores sin vincular la página (vista) al objeto

◆ Struts usa OGNL para la conversión de tipos, para objetos básicos y objetos comunes proporciona convertidores

.

Validación ◆ Struts admite la validación manual en el método de validación de ActionForm, o al extender Commons Validator no se pueden validar.

◆ Struts admite la verificación a través de métodos de verificación y el marco de verificación XWork. El marco de verificación utiliza la verificación y la verificación de contenido definidas para los tipos de clases de atributos y admite el control de la ejecución de acciones de subatributos de verificación en cadena. ◆ Struts admite RequestProcessors (ciclo de vida) separados para cada módulo.

Struts admite procesadores de solicitudes separados para cada módulo, pero todas las acciones de un módulo deben tener el mismo ciclo de vida.

◆Struts admite pilas de interceptores para cada acción que crea un ciclo de vida diferente.

Diagrama de flujo de trabajo de Struts

Diagrama de flujo de trabajo

Flujo de trabajo Al recibir una solicitud, el interceptor interceptará o inicializará el trabajo. Cuando llega una solicitud de servlet externo, se inicializará en el contenedor de servlets y se pasará a la cadena de filtros estándar ActionContextCleanUp, que es útil para integrar complementos y otros filtros (SitMesh, etc.).

Al llamar a FilterDispatecher, buscará un ActionMapper adecuado. Si lo encuentra, entregará el control a ActionProxy, encontrará la configuración de struts xml a través de ConfigurationManager y luego la procesará. ActionInvocation. Comando de ActionInvocation, ActionInvocation es responsable de ejecutar el modo de comando (incluida la llamada a algunos marcos interceptores antes de llamar a la acción)

Una vez que se devuelve la acción, buscará el resultado correspondiente. el resultado correspondiente Tipo de resultado, el tipo puede ser jsp o freeMark, etc. Estos componentes se devolverán al ActionMapper junto con la URL devuelta a la solicitud (preste atención al orden de ejecución de los interceptores) lishixinzhi/Article/program/Java/ky/201311/28090