/jsp/Menu.jsp /jsp/Exit.jsp CURSO STRUTS 2 RESUMEN ACTIONS El componente principal del framework Struts 2 son los Actions. Hay que conocer claramente los siguientes conceptos: ¿Qué es un Action? Los Actions son el núcleo principal de la gestión de cada petición que recibirá nuestra aplicación Web, son los responsables de realizar la lógica de negocio. Definición Reglas Objetivos Configuración Reglas de un Action Un Action es una clase ordinaria, un POJO (Plain Old Java Object), que contendrá atributos y métodos, además de respetar las siguientes reglas: CONSTRUCTOR, sin ningún parámetro ATRIBUTOS , deben implementar los métodos públicos “get” y “set” MÉTODOS, debe contener al menos un método público que retorne un String THREAD-SAFE, no es necesario que la clase sea Thread-Safe Objetivos de un Action Un Action debe cumplir los siguientes tres objetivos: ENCAPSULACIÓN, las clases Action son responsables de la lógica de negocio. TRANSFERENCIA DATOS, los Actions capturan y preparan los datos para que sean mostrados en la Vista. RESULT, el método de lógica del Action debe decidir que resultado se debe invocar tras su ejecución, para ello debe devolver un String."> /jsp/Menu.jsp /jsp/Exit.jsp CURSO STRUTS 2 RESUMEN ACTIONS El componente principal del framework Struts 2 son los Actions. Hay que conocer claramente los siguientes conceptos: ¿Qué es un Action? Los Actions son el núcleo principal de la gestión de cada petición que recibirá nuestra aplicación Web, son los responsables de realizar la lógica de negocio. Definición Reglas Objetivos Configuración Reglas de un Action Un Action es una clase ordinaria, un POJO (Plain Old Java Object), que contendrá atributos y métodos, además de respetar las siguientes reglas: CONSTRUCTOR, sin ningún parámetro ATRIBUTOS , deben implementar los métodos públicos “get” y “set” MÉTODOS, debe contener al menos un método público que retorne un String THREAD-SAFE, no es necesario que la clase sea Thread-Safe Objetivos de un Action Un Action debe cumplir los siguientes tres objetivos: ENCAPSULACIÓN, las clases Action son responsables de la lógica de negocio. TRANSFERENCIA DATOS, los Actions capturan y preparan los datos para que sean mostrados en la Vista. RESULT, el método de lógica del Action debe decidir que resultado se debe invocar tras su ejecución, para ello debe devolver un String.">

La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

CURSO STRUTS 2 RESUMEN Resumen de lo visto en este segundo módulo: CONCEPTOS PRINCIPALES del framework Struts 2 Debes tener los conceptos muy claros sobre:

Presentaciones similares


Presentación del tema: "CURSO STRUTS 2 RESUMEN Resumen de lo visto en este segundo módulo: CONCEPTOS PRINCIPALES del framework Struts 2 Debes tener los conceptos muy claros sobre:"— Transcripción de la presentación:

1 CURSO STRUTS 2 RESUMEN Resumen de lo visto en este segundo módulo: CONCEPTOS PRINCIPALES del framework Struts 2 Debes tener los conceptos muy claros sobre: Actions Interceptors OGNL y Value Stack Conversión de Tipos Configuración

2 CURSO STRUTS 2 RESUMEN ACTIONS Configurar los Actions
Utilizando los tags <action> y <package> para crear las estructuras de configuración de los archivos XML de configuración de Struts 2: <package name="capitulo2" namespace="/capitulo2/secure" extends="struts-default"> <action name="menu"> <result>/jsp/Menu.jsp</result> </action> <action name="info" class=”ejemplo.general.Info”> <result>/jsp/Exit.jsp</result> <action name="exit"> </package> CURSO STRUTS 2 RESUMEN ACTIONS El componente principal del framework Struts 2 son los Actions. Hay que conocer claramente los siguientes conceptos: ¿Qué es un Action? Los Actions son el núcleo principal de la gestión de cada petición que recibirá nuestra aplicación Web, son los responsables de realizar la lógica de negocio. Definición Reglas Objetivos Configuración Reglas de un Action Un Action es una clase ordinaria, un POJO (Plain Old Java Object), que contendrá atributos y métodos, además de respetar las siguientes reglas: CONSTRUCTOR, sin ningún parámetro ATRIBUTOS , deben implementar los métodos públicos “get” y “set” MÉTODOS, debe contener al menos un método público que retorne un String THREAD-SAFE, no es necesario que la clase sea Thread-Safe Objetivos de un Action Un Action debe cumplir los siguientes tres objetivos: ENCAPSULACIÓN, las clases Action son responsables de la lógica de negocio. TRANSFERENCIA DATOS, los Actions capturan y preparan los datos para que sean mostrados en la Vista. RESULT, el método de lógica del Action debe decidir que resultado se debe invocar tras su ejecución, para ello debe devolver un String.

3 CURSO STRUTS 2 RESUMEN ACTIONS Implementación de Actions
Las clases Action se pueden desarrollar de distintas formas: sin implementar ningún componente Struts 2: public class MiAction { public String miMetodo() { return “SUCCESS”; } implementado el interface Action: public class MiAction implements Action { public String execute() { return SUCCESS; extendiendo de la clase base ActionSupport de Struts 2, la forma más recomendada: public class MiAction extends ActionSupport { @override Componentes reutilizables Struts 2 en los Actions Struts 2 proporciona toda una serie de interfaces para mejorar la funcionalidad de los Actions. La clase base ActionSupport implementa alguno de ellos. Los interfaces de Struts 2 reutilizables en los Action son: Validateable, realizar validaciones dentro del Action. ValidationAware, enviar mensajes de error de validaciones. TextProvider, permite i18n dentro del Action. LocaleProvider, define el locale del usuario. Preparable, método para pre-procesar la información. ModelDriven, oculta el modelo en la vista. ServletContextAware, permite acceder al objeto ServletContext. ServletRequestAware , permite acceder al objeto HttpServletRequest. ServletResponseAware , permite acceder al objeto HttpServletResponse. SessionAware , permite obtener los valores del objeto HttpSession. PrincipalAware, permite obtener las credenciales de seguridad. ACTIONS También hemos aprendido como desarrollar Actions y la relación de componentes del framework que podemos reutilizar: Implementación de Actions Componentes reutilizables de Struts 2

4 CURSO STRUTS 2 RESUMEN INTERCEPTORS Configuración de los Intercpetors
Los Interceptor se deben declarar en los archivos de configuración XML de la aplicación, y básicamente existe dos lugares para configurar el Interceptor Stack a ejecutar en una petición: Action, configurar el Interceptor Stack a ejecutarse para un solo Action. <package name=”...” namespace=”...” extens=”struts-default”> <action name="..." class="..."> <interceptor-ref name="roles"/> <interceptor-ref name="basicStack"/> <result>/jsp/Success.jsp</result> </action> </package> Package, configurando de esta forma el Interceptor Stack estos se ejecutan para todos las URL del package. CURSO STRUTS 2 RESUMEN INTERCEPTORS Otro componente muy utilizado de Struts 2, son los Interceptors resaltando los siguientes conceptos vistos: ¿Qué es un Interceptor? Un Interceptor es un componente de Struts 2 que se encarga de capturar las peticiones Web que se reciben antes de llegar al Modelo (Action) para realizar gestiones sobre esta. Cada Interceptor tiene como meta realizar una labor en concreto sobre la petición, de esta forma se mantiene la independencia entre cada Interceptor. Definición Funcionamiento Orden Configuración Funcionamiento de los Interceptors Cada Interceptor pasa por tres fases en su ejecución: Fase de pre-procesamiento, el Interceptor puede realizar tareas de preparación, filtrado, alteración datos o cualquier tarea que manipule los datos antes de que alcancen el Action. Devolución control ActionInvocation, llamando para ello al método invoke(), o devolviendo directamente un resultado String. La clase ActionInvocation será la que decida pasar el control al siguiente Interceptor, o al Action, o al Result, si el estado no es correcto. Fase post-procesamiento, el Interceptor realiza tareas de alteración de los datos, gestión de errores, estado de atributos. Pero durante esta fase no se podrá modificar el estado (Result) dado que está ya se ha procesado. Orden de invocación de los Interceptors El Interceptor Stack que se deben ejecutar en una petición, se ejecutan en el mismo orden en los que están declarados en la configuración XML. <interceptor-stack name="basicStack"> <interceptor-ref name="exception"/> <interceptor-ref name="servletConfig"/> <interceptor-ref name="prepare"/> <interceptor-ref name="checkbox"/> <interceptor-ref name="params"/> <interceptor-ref name="conversionError"/> </interceptor-stack> Action Result exception modelDrive params workflow

5 CURSO STRUTS 2 RESUMEN INTERCEPTORS Interceptors de Utilidad
Interceptors que realizan labores para facilitar el desarrollo, rendimiento y encuentren problemas. DEBUG, Interceptor que permite obtener toda la información del ValueStack de la página actual para conocer los datos. LOGGER , Interceptor dispone de un mecanismo simple de loggin que registra la fase de pre-procesamiento y la fase de post-procesamiento de una petición. PROFILING, Interceptor que permite realizar tareas de profiling para cada petición. TIMER, Interceptor que simplemente captura la duración de la ejecución de una petición CURSO STRUTS 2 RESUMEN Interceptors Workflow Grupo de Interceptor que gestionan el flujo de trabajo de las peticiones y el estado de las mismas, pudiendo llegar incluso a cambiar el Result a mostrar. MODELDRIVEN, Interceptor que utiliza el patrón ModelDriven para instanciar todos los parámetros de la petición en un atributo del Action, ocultando a la Vista que tipo de objeto se trata. PREPARE, Interceptor dispone de un punto de entrada en el Action para invocar al método “prepare()” el cual realiza tareas de pre-procesamiento. VALIDATION, Interceptor responsable de las validaciones que debe realiza el framework de validaciones que utiliza el framework Struts 2. WORKFLOW, Interceptor encargado de invocar al método “validate()” del Action si este implementa el interface Validateable. INTERCEPTORS Es muy importante conocer con que tipos de Interceptors cuenta Struts 2, así como el objetivo de cada uno: Utilidad Interceptors de Transferencia de Datos Interceptors que facilitan la transferencia de datos gestionan, así como su manipulación. ALIAS, Interceptor que modifica el nombre de distintos parámetros que puedan ser coincidir en una petición. AUTOWIRING, Interceptor permite un punto de integración para usar Spring para gestionar los recursos. CHECKBOX, Interceptor responsable de gestionar los valores de los checkbox en los formulario. FILEUPLOAD, Interceptor que gestiona el upload de archivos. PARAMS, Interceptor que transfiere los parámetros recibidos de una petición al Value Stack. SERVLET-CONFIG, Interceptor permite inyectar objetos del API Java Servlet en el Action. STATIC-PARAMS, Interceptor transfiere los valores estáticos definidos en los archivox XML al Value Stack. Transferencia Datos Workflow Intercpetors de Seguridad Interceptor relacionados con la seguridad de la aplicación en su entorno, el Contenedor de Servlets. ROLES, Interceptor solo permite la ejecución del Action si el usuario supera la seguridad JAAS Role.0 Seguridad Varios Intercpetors Varios Interceptors para distintas tareas, como pueda ser gestión errores, token, i18n,… EXECANDWAIT, Interceptor utilizado para aquellos Actions cuya ejecución de su lógica tarde mucho tiempo en completarse. EXCEPTION, Interceptor responsable de la gestión de las excepciones en la aplicación. I18N, Interceptor que se encarga de guardar el idioma del usuario en su sesión HTTP. TOKEN Y TOKEN-SESSION, Interceptors destinados a evitar el envío de formularios duplicados (doble submit).

6 CURSO STRUTS 2 RESUMEN OGNL y VALUE STACK ¿Qué es OGNL? Value Stack
OGNL (Object-Graph Navigation Language) es un componente de Struts 2 que permite acceder a los atributos de los Actions y parámetros en la Vista. Carácterísticas Enlaza los campos de un formulario Web (input, checkbox, textare,…) con su correspondiente Objeto en el Action, realizando además la conversión de tipos. Completa tags genéricos con los objetos del Modelo. Crea Collections y Maps en tiempo de ejecución para usar en la Vista. Permite invocar a métodos de los objetos del Modelo, no solo métodos “get” y “set”. Sintaxis %{} <s:property value=”%{nombre}”/> <s:property value=”%{usuario.nombre}”/> <s:property value=”%{#session.usuario}”/> <s:property value=”%{paises[1]}”/> CURSO STRUTS 2 RESUMEN OGNL y VALUE STACK Es importante conocer qué es y cómo funciona los conceptos OGNL y Value Stack del framework Struts 2: Value Stack Estructura compleja interna de Struts 2 para almacenar toda la información: peticiones, variables, session, atributos,... Sus valores son refrescados en cada petición. Estructura del objeto: Object Stack, almacena el Action, sus atributos y el Context Map. Context Map, almacena los siguientes valores: parameter, request, session y application. ¿Cómo diferencia OGNL el acceso a los datos del Object Stack de los datos del Context Map? Se utiliza el prefijo # si se intenta acceder al Context Map, sin el prefijo indicado se utilizará el Object Stack. //acceso OGNL a objetos del Object Stack <s:property value=”object1.propiedad”/> //acceso OGNL a Maps del Context Map <s:property value=”#parameters.campo1[0]”/> OGNL VALUE STACK Value Stack Context Map Object Stack Objeto 1 Objeto 2 parameters request session application attr

7 CURSO STRUTS 2 RESUMEN CONVERSIÓN DE TIPOS
Durante este módulo hemos visto como trabaja la conversión de tipos en Struts 2 y que componentes entran en juego: Funcionamiento de la Conversión de Tipos Todas los parámetros recibidos en una petición son de tipo String, por este motivo todos aquellos atributos que no sean de tipo String se debe realizar su correspondiente conversión de tipo. OGNL mediante su clase OgnlRuntime es la responsable de la conversión de tipos entre las peticiones Web y los atributos de los Actions. Funcionamiento Conversión Tipos por Defecto Conversores Personalizados request Navegador Web String Objeto Action OGNL Conversión de Tipos Personalizados Struts 2 permite implementar a los desarrolladores sus propios conversores de tipos, sólo es necesario un par de requisitos: una clase que implemente el interface TypeConverter, o más sencillo aún heredar de la clase StrutsTypeConverter para facilitar la implementación de los métodos de Objeto a String y de String a Objeto. public class MiConversor extends StrutsTypeConverter { public Object convertFromString(java.util.Map context, java.lang.String[] values, java.lang.Class toClass) { ... } public String convertToString(java.util.Map context, java.lang.Object o) { definir la configuración de la conversión, ya sea a nivel de Action, creando el archivo properties ClaseAction-conversion.properties, o bien de forma global creando en el directorio raíz del classpath (/WEB-INF/classes) el archivo xwork-conversion.properties. En ambos casos el contenido es el mismo definir la clase del Atributo a convertir, con su correspondiente clase Convertidora Tipos: rutaClaseDelAtribut=rutaClaseConvertidorTipos response getValor() Conversión de Tipos por Defecto El motor OGNL soporta la conversión de ciertos tipos por defecto, del valor de la petición a su correspondiente objeto: String boolean/Boolean char/Charater int/Integer, float/Float, long/Long y double/Double Date array List Map.

8 CURSO STRUTS 2 RESUMEN CONFIGURACIÓN web.xml struts.xml
descriptor de despliegue es el archivo principal y obligatorio, para permitir el funcionamiento del framework, define el Filter del framework para capturar todas las peticiones. <web-app id="WebApp_9" version="2.4" xmlns=" xmlns:xsi=" xsi:schemaLocation="..."> <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> <init-param> <param-name>actionPackages</param-name> <param-value>ejemplo.capitulo2.actions</param-value> </init-param> <param-name>config</param-name> <param-value>/WEB-INF/struts/struts-config.xml</param-value> </filter> <filter-mapping> <url-pattern>/*</url-pattern> </filter-mapping> <! > </web-app> struts.xml archivo opcional de configuración XML de la aplicación, contendrá Results, packages, Actions, Interceptors…. <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "  <struts> <include file="/ejemplo/capitulo2/Capitulo2.xml"/> <constant name=”struts.devMode” value=”true”/> <bean name=”uniqueBean” type=”Interface” class=”ejemplo.capitulo2.MiBeanClass”/> <package ...> <result-types> <result-type name="dispatcher" class="..." default="true"/> </result-types> <interceptors> <interceptor name="validation" class="..."/> </interceptors> <action name="login" class="ejercicio.capitulo2.Registro" method="login"> ... </action> </package> </struts> CURSO STRUTS 2 RESUMEN CONFIGURACIÓN Completado el módulo recordamos los archivos de configuración con los que cuenta el framework Struts 2 : web.xml struts.xml struts-default.xml struts.properties struts-plugin.xml struts-default.xml El archivo struts-default.xml es la configuración por defecto y se encuentra empaquetado dentro del JAR struts-core.jar. Define los Interceptors y los tipos Result que implementa el framework, además de definir el package struts-default el cual se puede extender para utilizar la configuración definida por Struts 2. struts.properties archivo opcional que contendrá la configuración del propio framework. La lista de atributos de la configuración del framework Struts 2 se puede encontrar en el archivo struts-default.properties dentro del JAR struts2-core.jar. struts-plugin.xml El archivo struts-plugin.xml se encuentra en el directorio raíz de cada plug-in de Struts 2 (JAR), se utiliza para definir la configuración del plugin. El archivo de configuración struts-plugin.xml utiliza la misma configuración y DTD que el archivo struts.xml, permitiendo definir de la misma forma elementos: <constant>, <bean>, <include> y <package>, junto a sus sub-elementos. Atributo Valor Defecto Descripción struts.i18n.encoding UTF-8 codificación por defecto struts.locale idioma por defecto de la aplicación struts.configuration define la clase que gestiona la configuración del framework struts.objectFactory la factoría de objetos por defecto del framework, aquí se puede definir “spring” para trabajar con el framework Spring. struts.objectFactory.spring.autoWire name especifica la tecnología autoWire de Spring cuando trabaja con Struts 2 struts.objectFactory.spring.useClassCach e true indica si en la integración struts-spring se deben cachear las clases struts.objectFactory.spring.autoWire.alwa ysRespect false asegura que se siempre se respete la tecnología autoWire marcada para Spring struts.objectTypeDeterminer determinador de objeto por defecto struts.multipart.parser jakarta analizador de las peticiones HTTP Post struts.multipart.saveDir directorio donde guardar los archivos enviados struts.multipart.maxSize tamaño máximo en bytes de los archivos que se podrán enviar struts.custom.properties carga configuración alternativa struts.mapper.class clase que gestiona los mapeos de URI a Action struts.action.extension action extensión por defecto de todas las URI invocado a los action struts.serve.static permite al Servlet Filter de Struts enviar contenido estático (CSS, JavaScript). struts.serve.static.browserCache envía información en la cabecera HTTP (header) para que el navegador del cliente guarde las peticiones en cache. struts.enable.DynamicMethodInvocation permite realizar invocaciones a objetos dinámicamente, como /action!metodo.action struts.enable.SlashesInActionNames notación / en las URI /action/metodo.action struts.tag.altSyntax sintaxis alternativa %{} para expresiones OGNL struts.devMode permite trabajar en modo desarrollo struts.i18n.reload permite recargar los archivos de idiomas dinámicamente durante la ejecución struts.ui.theme xhtml tema por defecto del tag los de Struts 2 struts.ui.templateDir template directorio por defecto donde se encuentras los elementos del template (CSS, JavaScript) struts.ui.templateSuffix ftl tipo template por defecto, puede ser: ftl, vm o jsp struts.configuration.xml.reload permite recargar dinámicamente la configuración durante la ejecución struts.velocity.configfile velocity.properties archivo defecto configuración velocity struts.velocity.contexts lista de VelocityContext struts.velocity.toolboxlocation localización Velocity Toolbox struts.url.http.port 80 puerto defecto para construir URI (http) struts.url.https.port 443 puerto defecto para construir URI seguras (https) struts.url.includeParams none posibles valores none, all o get struts.custom.i18n.resources permite definir archivos de recursos de texto personalizados struts.dispatcher.parametersWorkaround struts.freemarker.manager.classname clase gestor contenido FreeMarker struts.freemarker.templatesCache cache tecnología FreeMarker struts.freemarker.beanwrapperCache struts.freemarker.wrapper.altMap struts.freemarker.mru.max.strong.size 100 struts.xslt.nocache cache tecnología XSLT struts.mapper.alwaysSelectFullNamespac e utilizar siempre el namespace completo struts.ognl.allowStaticMethodAccess permite acceder métodos estáticos mediante OGNL


Descargar ppt "CURSO STRUTS 2 RESUMEN Resumen de lo visto en este segundo módulo: CONCEPTOS PRINCIPALES del framework Struts 2 Debes tener los conceptos muy claros sobre:"

Presentaciones similares


Anuncios Google