SlideShare una empresa de Scribd logo
1 de 49
Componentes de Struts2
Elaborado por:
Gary Briceño
FilterDispatcher
• Es el corazón de Struts2
• Punto de entrada al framework
• Lanza las peticiones del framework
• Responsabilidades:
• Ejecuta los Actions, que son los manejadores de las peticiones
• Inicia la ejecución de la cadena de Interceptors
• Limpia el ActionContext para evitar fuga de memoria
Proceso de peticiones
• El proceso de peticiones se realiza mediante:
• Interceptors
• Actions
• Results
Interceptors
• Clases que implementan el patrón Interceptor.
• Permite que se ejecuten funcionalidades comunes a todos los Actions, pero
se ejecutan fuera del Action.
• Ejemplo:
• Validación de datos, conversión de tipos, población de datos
• Realizan tareas antes y después de la ejecución de un Action, y puede
evitar la ejecución de un Action.
• Si alguna funcionalidad no se encuentra, podemos crear nuestros
propios interceptors.
Interceptores
Interceptor Nombre Descripción
Alias alias Permite que los parámetros tengan distintos nombres entre peticiones
Chaining chaining Permite que las propiedades del Action ejecutado previamente, estén
disponibles en el Action actual.
Checkbox checkbox Ayuda en el manejo de checkboxes agregando un parámetro con el
valor “false” para checkboxes que no están marcados
ConversionError conversionError Coloca información de los errores convirtiendo cadenas a los tipos de
parámetros adecuados para los campos de Action.
Create Session createSession Crea de forma automática una sesión HTTP si es que aún no existe una
Execute and Wait execAndWait Envía al usuario a una página de espera intermedia mientras el Action
se ejecuta en background.
File Upload fileUpload Hace que la carga de archivos sea más fácil de realizar
Stacks
• Se puede aplicar más de un Interceptor a un Action.
• Struts permite la creación de stacks o pilas de interceptores
• Los interceptores se aplican en el orden en el cual aparecen en el stack.
• Se pueden formar pilas de interceptores en base a otras pilas de
interceptores.
• Se aplica una pila de Interceptores por defecto a los Actions
Stacks
Nombre del Stack Interceptor incluido Descripción
basicStack exception, servletConfig, prepare, checkbox,
multiselect, actionMappingParams, params,
conversionError
Los interceptores que se espera se
utilicen en todos los casos, hasta los más
básicos
validationWorkflowSta
ck
basicStack, validation, workflow Agrega validación y flujo de trabajo a las
características del stack básico
fileUploadStack fileUpload, basicStack Agrega funcionalidad de carga de archivos
a las características de stack básico
paramsPrepareParams
Stack
alias, i18n, checkbox, multiselect, params,
servletConfig, prepare, chain, modelDriven,
fileUpload, staticParams, actionMappingParams,
params, conversionError, validation, workflow
Proporciona un stack completo
defaultStack alias, servletConfig, i18n, prepare, chain,
debugging, scopedModelDriven, modelDriven,
fileUpload, checkbox, multiselect, staticParams,
actionMappingParams, params, conversionError,
validation, workflow
Es la pila que se aplica por default a todos
los Actions de la aplicación.
Actions
• Son clases encargadas para servir la lógica de una petición.
• Las URL son mapeadas a una acción específica
• Los Actions no requieren implementar una interfaz o extender una
clase
• Requisitos: debe tener un método que devuelva un String o un objeto tipo
Result.
• El nombre por defecto de este método es “execute”.
Actions
• Pueden ser
• Objetos Java simples ( POJOs )
• Clases que implementan com.opensymphony.xwork2.Action
• Heredar de com.opensymphony.xwork2.ActionSupport
Interfaz Action
La clase ActionSupport implementa la interface Action y contiene una implementación del
método execute() que regresa el valor de “SUCCESS”. Así mismo implementa
Results
• Una vez procesado el requerimiento del usuario, se devuelve la
respuesta mediante un Result.
• Contiene:
• Tipo de result, que indica como debe ser tratado el resultado: Un JSP, redirigir
a otra página o un flujo de bytes.
• El tipo de Result por defecto es el dispatcher.
• Un Action puede tener más de un Result asociado.
OGNL
Object Graph Navigation Language
• Permite leer valores de objetos Java y ejecutar métodos, a fin de
visualizar los resultados en páginas JSP mediante las etiquetas de
Struts.
• Permite una conversión automática de tipos desde texto HTTP a
objetos Java
• Struts utiliza una versión propia de OGNL
OGNL
• Utiliza un contexto estándar de nombres para evaluar las expresiones
• El objeto de más alto nivel es un Map, denominado mapa de contexto
o contexto.
• Maneja siempre un objeto raíz, que actúa por default para las
llamadas.
• Al utilizar una expresión, las propiedades del objeto raíz pueden ser
referenciadas sin ninguna marca especial.
• La referencia a objetos se realiza mediante #
Ejemplo
• Se tiene los objetos “foo” y “bar” y “foo” es el objeto raíz.
#foo.blah // retorna foo.getBlah()
#bar.blah // retorna bar.getBlah()
blah // regresa foo.getBlah(), por que foo es la raíz
• Se pueden tener varios objetos en el Contexto, pero sólo se puede
acceder a miembros del objeto raíz en forma directa.
• Al hacer referencia a blah, OGNL buscará el método getBlah().
ValueStack
• OGNL estándar sólo tiene una raíz, pero Struts2 tiene un ValueStack,
que permite simular varias raíces.
• Cada objeto del ValueStack se comporta como raíz del mapa de
contexto.
Struts2 y OGNL
• El framework establece un contexto como un objeto del tipo
ActionContext
• ActionContext es el contexto en el cual se ejecuta el Action
• El contexto es un contenedor de objetos que el Action requiere para su
ejecución:
• session, parameters, locale, etc
• El ValueStack es el objeto raíz.
• Conjunto de muchos objetos
Struts2 y el ValueStack
• El ValueStack es el que permite acceder directamente a las
propiedades de los objetos
• Se puede acceder al objeto y luego a la propiedad, o
• Se puede acceder directamente a la propiedad
• El OGNL de Struts2 tiene un “PropertyAccessor” que buscara en
todos los objetos del stack
Ejemplo de ValueStack
Struts2_Sample_02_ValueStack
Cuando Struts2 ejecuta un Action como consecuencia
de una petición, este Action es colocado en la cima del
ValueStack
Objetos del ActionContext
Valores fuera de la raíz
• Para llegar a los valores fuera de la raíz utilizamos el carácter #
• Por ejemplo:
• <s:property value="#session.datoSesion" />
• Revisar:
• datosSession.action
Validaciones
Mediante XML
• Se debe crear un archivo para cada clase que será validada
• El archivo debe estar colocado en la misma carpeta del Action
• En este archivo se debe indicar cuales campos serán validados y que
validaciones se aplicarán
Validaciones de Struts2
Ejemplo de Validator
Struts2_Sample_03_Validator
Validaciones propias
• Struts proporciona la interfaz Validatable, la cual tiene un solo
método validate.
• ActionSupport implementa esta interfaz, por lo cual el método se
debe sobre escribir
• Si existe un error en un campo, se tiene addFieldError
• Recibe dos parámetros: nombre de campo y descripción del erro
• Si existe un error no relacionado a un campo se tiene addActionError
• Recibe un parámetro: descripción del error
Struts y el SCOPE
Scopes de objetos web
• Se denomina scopes o alcance al tiempo de vida de un objeto.
• Application
• Tiempo de vida completo de la aplicación
• Session
• Múltiples peticiones para un mismo usuario
• Response
• Asociado a una petición
Formas de Accesos
• Implementar una interface del tipo Aware
• Uso del objeto ActionContext
• Uso del objeto ServletActionContext
Objetos de Servlet
• Se puede acceder a los objetos HttpServletRequest y ServletContext
mediante
• Una interface Aware
• El objeto ServletActionContext
Manejo de Scopes
• Struts 2 tiene las siguientes interfaces
• ApplicationAware
• SessionAware
• RequestAware
Interfaces
Constantes
• success
• Indica que se efectuó el proceso en forma correcta
• error
• Indica que se presento un error en el proceso
• input
• Indica que algún campo del formulario es incorrecto.
• login
• El recurso sólo esta disponible para usuarios registrados
• none
• Indica a struts2 que no debe enviar al usuario a ningún lugar
Tipos de Resultado
• dispatcher
• Es el resultado por default, envía como resultado una nueva vista
• redirect
• Indica al navegador que debe redirigirse a una nueva página.
• Puede estar en nuestra aplicación o un sitio externo
• Creara una nueva petición para ese recurso
• redirectAction
• Redirige la petición a otro Action de la aplicación.
• Se crea una nueva petición
• chain
• Al terminar la ejecución del Action se llama a otro Action
• Se utiliza la misma petición para el segundo Action
• Ejecuta el Action de manera completa, con todo el stack
Tipos de Resultado
• stream
• Permite enviar un archivo binario de vuelta al usuario
• plaintext
• Envía el contenido del recurso como un texto plano
• httpheader
• Permite establecer el código de la cabecera HTTP
• Se puede utilizar para enviar un error al cliente (status 500), un recurso no
encontrado (status 404)
Tipos de Resultado
• xstl
• Se utiliza cuando el resultado genera un XML, el cual con estilos genera la
vista para el cliente
• freemarker
• Para integrar con FreeMarker
• velocity
• Para integrar con Velocity
• tiles
• Para integrar con Tiles
Interceptores
Pila básica: basicStack
• exception
• servletConfig
• prepare
• checkbox
• params
• conversionError
defaultStack
• exception
• alias
• servletConfig
• prepare
• i18n
• chain
• debugging
• profiling
• scopedModelDriven
• modelDriven
• fileUpload
• checkbox
• staticParams
• conversionError
• validation
• workflow
fileUpload
• Interceptor que permite la carga de archivos
• Esta implementado por la clase:
• org.apache.struts2.interceptor.FileUploadInterceptor
• Recibe dos parámetros:
• maximumSize
• allowedTypes
Interceptores
Forma corta
Agregando interceptores
Agregando Interceptores a un stack
• Se pueden agregar interceptores a un stack y luego definirlo como
default
• Utilizamos la etiqueta <interceptors>
• Dentro de esta etiqueta se pueden agregar interceptores nuevos
Definición de Interceptors
Uso del interceptor definido
Modificación del Interceptor
Modificación

Más contenido relacionado

La actualidad más candente (20)

Sql dataadapter
Sql dataadapterSql dataadapter
Sql dataadapter
 
Campos (1)
Campos (1)Campos (1)
Campos (1)
 
Campos (1)1
Campos (1)1Campos (1)1
Campos (1)1
 
Ado
AdoAdo
Ado
 
Objeto command
Objeto commandObjeto command
Objeto command
 
Multitarea e hilos en java con ejemplos
Multitarea e hilos en java con ejemplosMultitarea e hilos en java con ejemplos
Multitarea e hilos en java con ejemplos
 
Sysmana 2017 monitorización de logs con el stack elk
Sysmana 2017   monitorización de logs con el stack elkSysmana 2017   monitorización de logs con el stack elk
Sysmana 2017 monitorización de logs con el stack elk
 
Programando en java
Programando en javaProgramando en java
Programando en java
 
Objeto SqlDataReader
Objeto SqlDataReaderObjeto SqlDataReader
Objeto SqlDataReader
 
Hilos En Java
Hilos En JavaHilos En Java
Hilos En Java
 
Statement
StatementStatement
Statement
 
Statement
StatementStatement
Statement
 
Hilos – threads en java
Hilos – threads   en javaHilos – threads   en java
Hilos – threads en java
 
Servlets que manejan datos de formularios HTML
Servlets que manejan datos de formularios HTMLServlets que manejan datos de formularios HTML
Servlets que manejan datos de formularios HTML
 
CONECTAR C# CON POSTGRESQL USANDO NPGSQL 2.0.11
CONECTAR  C# CON POSTGRESQL  USANDO NPGSQL 2.0.11CONECTAR  C# CON POSTGRESQL  USANDO NPGSQL 2.0.11
CONECTAR C# CON POSTGRESQL USANDO NPGSQL 2.0.11
 
Java con base de datos
Java con base de datosJava con base de datos
Java con base de datos
 
JPA en Netbeans
JPA en NetbeansJPA en Netbeans
JPA en Netbeans
 
Jdbc
JdbcJdbc
Jdbc
 
Prepared statement
Prepared statementPrepared statement
Prepared statement
 
Threads en Java
Threads en JavaThreads en Java
Threads en Java
 

Similar a Java struts2 - 03 componentes de la aplicacion

Similar a Java struts2 - 03 componentes de la aplicacion (20)

Strust
StrustStrust
Strust
 
Struts2
Struts2Struts2
Struts2
 
Manual Basico De Struts
Manual Basico De StrutsManual Basico De Struts
Manual Basico De Struts
 
Clase 5 struts2
Clase 5 struts2Clase 5 struts2
Clase 5 struts2
 
Introducción a Tomcat
Introducción a TomcatIntroducción a Tomcat
Introducción a Tomcat
 
5.- PPT 2022 05 U01 T01 Desarrollo de Servicios Web I (1915).pptx
5.- PPT 2022 05 U01 T01 Desarrollo de Servicios Web I (1915).pptx5.- PPT 2022 05 U01 T01 Desarrollo de Servicios Web I (1915).pptx
5.- PPT 2022 05 U01 T01 Desarrollo de Servicios Web I (1915).pptx
 
Tema 3 xml processing ap is
Tema 3   xml processing ap isTema 3   xml processing ap is
Tema 3 xml processing ap is
 
Curso de Struts2: Unidad Didáctica 00 Introduccion
Curso de Struts2: Unidad Didáctica 00 IntroduccionCurso de Struts2: Unidad Didáctica 00 Introduccion
Curso de Struts2: Unidad Didáctica 00 Introduccion
 
Programacion web java
Programacion web javaProgramacion web java
Programacion web java
 
Curso Java Avanzado 2 Servlets
Curso Java Avanzado   2 ServletsCurso Java Avanzado   2 Servlets
Curso Java Avanzado 2 Servlets
 
Patrones de diseño
Patrones de diseñoPatrones de diseño
Patrones de diseño
 
Tutorial struts 2
Tutorial struts 2Tutorial struts 2
Tutorial struts 2
 
Objetos implícitos en jsp
Objetos implícitos en jspObjetos implícitos en jsp
Objetos implícitos en jsp
 
servlets
servlets servlets
servlets
 
Web services GeneXus Tilo
Web services GeneXus TiloWeb services GeneXus Tilo
Web services GeneXus Tilo
 
01 introducción
01 introducción01 introducción
01 introducción
 
Conceptos Introductorios Del Web 2
Conceptos Introductorios Del Web 2Conceptos Introductorios Del Web 2
Conceptos Introductorios Del Web 2
 
Clase 5 AJAX - Desarrollo de aplicaciones móviles
Clase 5  AJAX - Desarrollo de aplicaciones móvilesClase 5  AJAX - Desarrollo de aplicaciones móviles
Clase 5 AJAX - Desarrollo de aplicaciones móviles
 
Multitarea
MultitareaMultitarea
Multitarea
 
Oracle Coherence (by Leonardo Torres Altez)
Oracle Coherence (by Leonardo Torres Altez)Oracle Coherence (by Leonardo Torres Altez)
Oracle Coherence (by Leonardo Torres Altez)
 

Último

MODELO CARACTERIZACION DE PROCESOS SENA.
MODELO CARACTERIZACION DE PROCESOS SENA.MODELO CARACTERIZACION DE PROCESOS SENA.
MODELO CARACTERIZACION DE PROCESOS SENA.imejia2411
 
Producto académico 03 - Habilidades Comunicativas.pptx
Producto académico 03 - Habilidades Comunicativas.pptxProducto académico 03 - Habilidades Comunicativas.pptx
Producto académico 03 - Habilidades Comunicativas.pptx46828205
 
PRIMARIA 1. RESUELVE PROBLEMAS DE FORMA MOVIMIENTO Y LOCALIZACIÓN 2 (2).pptx
PRIMARIA 1. RESUELVE PROBLEMAS DE FORMA MOVIMIENTO Y LOCALIZACIÓN 2 (2).pptxPRIMARIA 1. RESUELVE PROBLEMAS DE FORMA MOVIMIENTO Y LOCALIZACIÓN 2 (2).pptx
PRIMARIA 1. RESUELVE PROBLEMAS DE FORMA MOVIMIENTO Y LOCALIZACIÓN 2 (2).pptxRodriguezLucero
 
FLUIDEZ-Teatro-Leido-4to-Grado-El-leon-y-el-raton- (1).pdf
FLUIDEZ-Teatro-Leido-4to-Grado-El-leon-y-el-raton- (1).pdfFLUIDEZ-Teatro-Leido-4to-Grado-El-leon-y-el-raton- (1).pdf
FLUIDEZ-Teatro-Leido-4to-Grado-El-leon-y-el-raton- (1).pdfYuriFuentesMartinez2
 
INSTITUCION EDUCATIVA LA ESPERANZA SEDE MAGDALENA
INSTITUCION EDUCATIVA LA ESPERANZA SEDE MAGDALENAINSTITUCION EDUCATIVA LA ESPERANZA SEDE MAGDALENA
INSTITUCION EDUCATIVA LA ESPERANZA SEDE MAGDALENAdanielaerazok
 
Historia de la Medicina y bases para desarrollo de ella
Historia de la Medicina y bases para desarrollo de ellaHistoria de la Medicina y bases para desarrollo de ella
Historia de la Medicina y bases para desarrollo de ellajuancamilo3111391
 
Buscadores, SEM SEO: el desafío de ser visto en la web
Buscadores, SEM SEO: el desafío de ser visto en la webBuscadores, SEM SEO: el desafío de ser visto en la web
Buscadores, SEM SEO: el desafío de ser visto en la webDecaunlz
 
Institucion educativa la esperanza sede la magdalena
Institucion educativa la esperanza sede la magdalenaInstitucion educativa la esperanza sede la magdalena
Institucion educativa la esperanza sede la magdalenadanielaerazok
 
2º SOY LECTOR PART 2- MD EDUCATIVO (6).pdf
2º SOY LECTOR PART 2- MD  EDUCATIVO (6).pdf2º SOY LECTOR PART 2- MD  EDUCATIVO (6).pdf
2º SOY LECTOR PART 2- MD EDUCATIVO (6).pdfFernandaHernandez312615
 
El uso de las tic en la vida continúa , ambiente positivo y negativo.
El uso de las tic  en la vida continúa , ambiente positivo y negativo.El uso de las tic  en la vida continúa , ambiente positivo y negativo.
El uso de las tic en la vida continúa , ambiente positivo y negativo.ayalayenifer617
 
libro de Ciencias Sociales_6to grado.pdf
libro de Ciencias Sociales_6to grado.pdflibro de Ciencias Sociales_6to grado.pdf
libro de Ciencias Sociales_6to grado.pdfFAUSTODANILOCRUZCAST
 
actividad.06_crea_un_recurso_multimedia_M01_S03_M01.ppsx
actividad.06_crea_un_recurso_multimedia_M01_S03_M01.ppsxactividad.06_crea_un_recurso_multimedia_M01_S03_M01.ppsx
actividad.06_crea_un_recurso_multimedia_M01_S03_M01.ppsx241532171
 
3Mayo2023 Taller construcción de Prototipos.pptx
3Mayo2023 Taller construcción de Prototipos.pptx3Mayo2023 Taller construcción de Prototipos.pptx
3Mayo2023 Taller construcción de Prototipos.pptxadso2024sena
 
locomotas v siclo.ppt de ingenieria de minas
locomotas v siclo.ppt de ingenieria de minaslocomotas v siclo.ppt de ingenieria de minas
locomotas v siclo.ppt de ingenieria de minasMirkaCBauer
 
institucion educativa la esperanza sede magdalena
institucion educativa la esperanza sede magdalenainstitucion educativa la esperanza sede magdalena
institucion educativa la esperanza sede magdalenajuniorcuellargomez
 
rodriguez_DelAngel_MariaGPE_M1S3AL6.pptx
rodriguez_DelAngel_MariaGPE_M1S3AL6.pptxrodriguez_DelAngel_MariaGPE_M1S3AL6.pptx
rodriguez_DelAngel_MariaGPE_M1S3AL6.pptxssuser61dda7
 
COMPETENCIAS CIUDADANASadadadadadadada .pdf
COMPETENCIAS CIUDADANASadadadadadadada .pdfCOMPETENCIAS CIUDADANASadadadadadadada .pdf
COMPETENCIAS CIUDADANASadadadadadadada .pdfOscarBlas6
 
CamposGarcia_MariaMagdalena_M1S3AI6.pptx
CamposGarcia_MariaMagdalena_M1S3AI6.pptxCamposGarcia_MariaMagdalena_M1S3AI6.pptx
CamposGarcia_MariaMagdalena_M1S3AI6.pptx241518192
 

Último (18)

MODELO CARACTERIZACION DE PROCESOS SENA.
MODELO CARACTERIZACION DE PROCESOS SENA.MODELO CARACTERIZACION DE PROCESOS SENA.
MODELO CARACTERIZACION DE PROCESOS SENA.
 
Producto académico 03 - Habilidades Comunicativas.pptx
Producto académico 03 - Habilidades Comunicativas.pptxProducto académico 03 - Habilidades Comunicativas.pptx
Producto académico 03 - Habilidades Comunicativas.pptx
 
PRIMARIA 1. RESUELVE PROBLEMAS DE FORMA MOVIMIENTO Y LOCALIZACIÓN 2 (2).pptx
PRIMARIA 1. RESUELVE PROBLEMAS DE FORMA MOVIMIENTO Y LOCALIZACIÓN 2 (2).pptxPRIMARIA 1. RESUELVE PROBLEMAS DE FORMA MOVIMIENTO Y LOCALIZACIÓN 2 (2).pptx
PRIMARIA 1. RESUELVE PROBLEMAS DE FORMA MOVIMIENTO Y LOCALIZACIÓN 2 (2).pptx
 
FLUIDEZ-Teatro-Leido-4to-Grado-El-leon-y-el-raton- (1).pdf
FLUIDEZ-Teatro-Leido-4to-Grado-El-leon-y-el-raton- (1).pdfFLUIDEZ-Teatro-Leido-4to-Grado-El-leon-y-el-raton- (1).pdf
FLUIDEZ-Teatro-Leido-4to-Grado-El-leon-y-el-raton- (1).pdf
 
INSTITUCION EDUCATIVA LA ESPERANZA SEDE MAGDALENA
INSTITUCION EDUCATIVA LA ESPERANZA SEDE MAGDALENAINSTITUCION EDUCATIVA LA ESPERANZA SEDE MAGDALENA
INSTITUCION EDUCATIVA LA ESPERANZA SEDE MAGDALENA
 
Historia de la Medicina y bases para desarrollo de ella
Historia de la Medicina y bases para desarrollo de ellaHistoria de la Medicina y bases para desarrollo de ella
Historia de la Medicina y bases para desarrollo de ella
 
Buscadores, SEM SEO: el desafío de ser visto en la web
Buscadores, SEM SEO: el desafío de ser visto en la webBuscadores, SEM SEO: el desafío de ser visto en la web
Buscadores, SEM SEO: el desafío de ser visto en la web
 
Institucion educativa la esperanza sede la magdalena
Institucion educativa la esperanza sede la magdalenaInstitucion educativa la esperanza sede la magdalena
Institucion educativa la esperanza sede la magdalena
 
2º SOY LECTOR PART 2- MD EDUCATIVO (6).pdf
2º SOY LECTOR PART 2- MD  EDUCATIVO (6).pdf2º SOY LECTOR PART 2- MD  EDUCATIVO (6).pdf
2º SOY LECTOR PART 2- MD EDUCATIVO (6).pdf
 
El uso de las tic en la vida continúa , ambiente positivo y negativo.
El uso de las tic  en la vida continúa , ambiente positivo y negativo.El uso de las tic  en la vida continúa , ambiente positivo y negativo.
El uso de las tic en la vida continúa , ambiente positivo y negativo.
 
libro de Ciencias Sociales_6to grado.pdf
libro de Ciencias Sociales_6to grado.pdflibro de Ciencias Sociales_6to grado.pdf
libro de Ciencias Sociales_6to grado.pdf
 
actividad.06_crea_un_recurso_multimedia_M01_S03_M01.ppsx
actividad.06_crea_un_recurso_multimedia_M01_S03_M01.ppsxactividad.06_crea_un_recurso_multimedia_M01_S03_M01.ppsx
actividad.06_crea_un_recurso_multimedia_M01_S03_M01.ppsx
 
3Mayo2023 Taller construcción de Prototipos.pptx
3Mayo2023 Taller construcción de Prototipos.pptx3Mayo2023 Taller construcción de Prototipos.pptx
3Mayo2023 Taller construcción de Prototipos.pptx
 
locomotas v siclo.ppt de ingenieria de minas
locomotas v siclo.ppt de ingenieria de minaslocomotas v siclo.ppt de ingenieria de minas
locomotas v siclo.ppt de ingenieria de minas
 
institucion educativa la esperanza sede magdalena
institucion educativa la esperanza sede magdalenainstitucion educativa la esperanza sede magdalena
institucion educativa la esperanza sede magdalena
 
rodriguez_DelAngel_MariaGPE_M1S3AL6.pptx
rodriguez_DelAngel_MariaGPE_M1S3AL6.pptxrodriguez_DelAngel_MariaGPE_M1S3AL6.pptx
rodriguez_DelAngel_MariaGPE_M1S3AL6.pptx
 
COMPETENCIAS CIUDADANASadadadadadadada .pdf
COMPETENCIAS CIUDADANASadadadadadadada .pdfCOMPETENCIAS CIUDADANASadadadadadadada .pdf
COMPETENCIAS CIUDADANASadadadadadadada .pdf
 
CamposGarcia_MariaMagdalena_M1S3AI6.pptx
CamposGarcia_MariaMagdalena_M1S3AI6.pptxCamposGarcia_MariaMagdalena_M1S3AI6.pptx
CamposGarcia_MariaMagdalena_M1S3AI6.pptx
 

Java struts2 - 03 componentes de la aplicacion

  • 1. Componentes de Struts2 Elaborado por: Gary Briceño
  • 2. FilterDispatcher • Es el corazón de Struts2 • Punto de entrada al framework • Lanza las peticiones del framework • Responsabilidades: • Ejecuta los Actions, que son los manejadores de las peticiones • Inicia la ejecución de la cadena de Interceptors • Limpia el ActionContext para evitar fuga de memoria
  • 3. Proceso de peticiones • El proceso de peticiones se realiza mediante: • Interceptors • Actions • Results
  • 4. Interceptors • Clases que implementan el patrón Interceptor. • Permite que se ejecuten funcionalidades comunes a todos los Actions, pero se ejecutan fuera del Action. • Ejemplo: • Validación de datos, conversión de tipos, población de datos • Realizan tareas antes y después de la ejecución de un Action, y puede evitar la ejecución de un Action. • Si alguna funcionalidad no se encuentra, podemos crear nuestros propios interceptors.
  • 5. Interceptores Interceptor Nombre Descripción Alias alias Permite que los parámetros tengan distintos nombres entre peticiones Chaining chaining Permite que las propiedades del Action ejecutado previamente, estén disponibles en el Action actual. Checkbox checkbox Ayuda en el manejo de checkboxes agregando un parámetro con el valor “false” para checkboxes que no están marcados ConversionError conversionError Coloca información de los errores convirtiendo cadenas a los tipos de parámetros adecuados para los campos de Action. Create Session createSession Crea de forma automática una sesión HTTP si es que aún no existe una Execute and Wait execAndWait Envía al usuario a una página de espera intermedia mientras el Action se ejecuta en background. File Upload fileUpload Hace que la carga de archivos sea más fácil de realizar
  • 6. Stacks • Se puede aplicar más de un Interceptor a un Action. • Struts permite la creación de stacks o pilas de interceptores • Los interceptores se aplican en el orden en el cual aparecen en el stack. • Se pueden formar pilas de interceptores en base a otras pilas de interceptores. • Se aplica una pila de Interceptores por defecto a los Actions
  • 7. Stacks Nombre del Stack Interceptor incluido Descripción basicStack exception, servletConfig, prepare, checkbox, multiselect, actionMappingParams, params, conversionError Los interceptores que se espera se utilicen en todos los casos, hasta los más básicos validationWorkflowSta ck basicStack, validation, workflow Agrega validación y flujo de trabajo a las características del stack básico fileUploadStack fileUpload, basicStack Agrega funcionalidad de carga de archivos a las características de stack básico paramsPrepareParams Stack alias, i18n, checkbox, multiselect, params, servletConfig, prepare, chain, modelDriven, fileUpload, staticParams, actionMappingParams, params, conversionError, validation, workflow Proporciona un stack completo defaultStack alias, servletConfig, i18n, prepare, chain, debugging, scopedModelDriven, modelDriven, fileUpload, checkbox, multiselect, staticParams, actionMappingParams, params, conversionError, validation, workflow Es la pila que se aplica por default a todos los Actions de la aplicación.
  • 8. Actions • Son clases encargadas para servir la lógica de una petición. • Las URL son mapeadas a una acción específica • Los Actions no requieren implementar una interfaz o extender una clase • Requisitos: debe tener un método que devuelva un String o un objeto tipo Result. • El nombre por defecto de este método es “execute”.
  • 9. Actions • Pueden ser • Objetos Java simples ( POJOs ) • Clases que implementan com.opensymphony.xwork2.Action • Heredar de com.opensymphony.xwork2.ActionSupport
  • 10. Interfaz Action La clase ActionSupport implementa la interface Action y contiene una implementación del método execute() que regresa el valor de “SUCCESS”. Así mismo implementa
  • 11. Results • Una vez procesado el requerimiento del usuario, se devuelve la respuesta mediante un Result. • Contiene: • Tipo de result, que indica como debe ser tratado el resultado: Un JSP, redirigir a otra página o un flujo de bytes. • El tipo de Result por defecto es el dispatcher. • Un Action puede tener más de un Result asociado.
  • 12.
  • 13. OGNL
  • 14. Object Graph Navigation Language • Permite leer valores de objetos Java y ejecutar métodos, a fin de visualizar los resultados en páginas JSP mediante las etiquetas de Struts. • Permite una conversión automática de tipos desde texto HTTP a objetos Java • Struts utiliza una versión propia de OGNL
  • 15. OGNL • Utiliza un contexto estándar de nombres para evaluar las expresiones • El objeto de más alto nivel es un Map, denominado mapa de contexto o contexto. • Maneja siempre un objeto raíz, que actúa por default para las llamadas. • Al utilizar una expresión, las propiedades del objeto raíz pueden ser referenciadas sin ninguna marca especial. • La referencia a objetos se realiza mediante #
  • 16. Ejemplo • Se tiene los objetos “foo” y “bar” y “foo” es el objeto raíz. #foo.blah // retorna foo.getBlah() #bar.blah // retorna bar.getBlah() blah // regresa foo.getBlah(), por que foo es la raíz • Se pueden tener varios objetos en el Contexto, pero sólo se puede acceder a miembros del objeto raíz en forma directa. • Al hacer referencia a blah, OGNL buscará el método getBlah().
  • 17. ValueStack • OGNL estándar sólo tiene una raíz, pero Struts2 tiene un ValueStack, que permite simular varias raíces. • Cada objeto del ValueStack se comporta como raíz del mapa de contexto.
  • 18. Struts2 y OGNL • El framework establece un contexto como un objeto del tipo ActionContext • ActionContext es el contexto en el cual se ejecuta el Action • El contexto es un contenedor de objetos que el Action requiere para su ejecución: • session, parameters, locale, etc • El ValueStack es el objeto raíz. • Conjunto de muchos objetos
  • 19. Struts2 y el ValueStack • El ValueStack es el que permite acceder directamente a las propiedades de los objetos • Se puede acceder al objeto y luego a la propiedad, o • Se puede acceder directamente a la propiedad • El OGNL de Struts2 tiene un “PropertyAccessor” que buscara en todos los objetos del stack
  • 20. Ejemplo de ValueStack Struts2_Sample_02_ValueStack Cuando Struts2 ejecuta un Action como consecuencia de una petición, este Action es colocado en la cima del ValueStack
  • 22. Valores fuera de la raíz • Para llegar a los valores fuera de la raíz utilizamos el carácter # • Por ejemplo: • <s:property value="#session.datoSesion" /> • Revisar: • datosSession.action
  • 24. Mediante XML • Se debe crear un archivo para cada clase que será validada • El archivo debe estar colocado en la misma carpeta del Action • En este archivo se debe indicar cuales campos serán validados y que validaciones se aplicarán
  • 27. Validaciones propias • Struts proporciona la interfaz Validatable, la cual tiene un solo método validate. • ActionSupport implementa esta interfaz, por lo cual el método se debe sobre escribir • Si existe un error en un campo, se tiene addFieldError • Recibe dos parámetros: nombre de campo y descripción del erro • Si existe un error no relacionado a un campo se tiene addActionError • Recibe un parámetro: descripción del error
  • 28. Struts y el SCOPE
  • 29. Scopes de objetos web • Se denomina scopes o alcance al tiempo de vida de un objeto. • Application • Tiempo de vida completo de la aplicación • Session • Múltiples peticiones para un mismo usuario • Response • Asociado a una petición
  • 30. Formas de Accesos • Implementar una interface del tipo Aware • Uso del objeto ActionContext • Uso del objeto ServletActionContext
  • 31. Objetos de Servlet • Se puede acceder a los objetos HttpServletRequest y ServletContext mediante • Una interface Aware • El objeto ServletActionContext
  • 32. Manejo de Scopes • Struts 2 tiene las siguientes interfaces • ApplicationAware • SessionAware • RequestAware
  • 34. Constantes • success • Indica que se efectuó el proceso en forma correcta • error • Indica que se presento un error en el proceso • input • Indica que algún campo del formulario es incorrecto. • login • El recurso sólo esta disponible para usuarios registrados • none • Indica a struts2 que no debe enviar al usuario a ningún lugar
  • 35. Tipos de Resultado • dispatcher • Es el resultado por default, envía como resultado una nueva vista • redirect • Indica al navegador que debe redirigirse a una nueva página. • Puede estar en nuestra aplicación o un sitio externo • Creara una nueva petición para ese recurso • redirectAction • Redirige la petición a otro Action de la aplicación. • Se crea una nueva petición • chain • Al terminar la ejecución del Action se llama a otro Action • Se utiliza la misma petición para el segundo Action • Ejecuta el Action de manera completa, con todo el stack
  • 36. Tipos de Resultado • stream • Permite enviar un archivo binario de vuelta al usuario • plaintext • Envía el contenido del recurso como un texto plano • httpheader • Permite establecer el código de la cabecera HTTP • Se puede utilizar para enviar un error al cliente (status 500), un recurso no encontrado (status 404)
  • 37. Tipos de Resultado • xstl • Se utiliza cuando el resultado genera un XML, el cual con estilos genera la vista para el cliente • freemarker • Para integrar con FreeMarker • velocity • Para integrar con Velocity • tiles • Para integrar con Tiles
  • 39. Pila básica: basicStack • exception • servletConfig • prepare • checkbox • params • conversionError
  • 40. defaultStack • exception • alias • servletConfig • prepare • i18n • chain • debugging • profiling • scopedModelDriven • modelDriven • fileUpload • checkbox • staticParams • conversionError • validation • workflow
  • 41. fileUpload • Interceptor que permite la carga de archivos • Esta implementado por la clase: • org.apache.struts2.interceptor.FileUploadInterceptor • Recibe dos parámetros: • maximumSize • allowedTypes
  • 45. Agregando Interceptores a un stack • Se pueden agregar interceptores a un stack y luego definirlo como default • Utilizamos la etiqueta <interceptors> • Dentro de esta etiqueta se pueden agregar interceptores nuevos