SlideShare una empresa de Scribd logo
1 de 49
2
Nombre:
Historia
Craig McClanahan
Importante por: Creador de Struts
En el año 2000 entrega Struts a
Apache Software Foundation
(ASF)
En 2005 unieron Struts con
WebWork para crear Struts 2
Desarrollo Web
FrameWork basado
en XML para
desarrollo Web
Modelo MVC
Vista
Controlador
Modelo
Usuarios
Solucionar
Mostrar
Gran integración
Usar diferentes
FrameWorks en la
capa del Modelo
Plugins
Instalación transparente para el usuario, solo hay
que meterlo en el classpath
Lenguaje OGNL
Object
Graph
Navigation
Language
Permite
leer objetos Java
en las JSPs
utilizando las
etiquetas de Struts
Interceptores
Clases para la
gestión de
entradas/salidas
en las Actions
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 marcadas (o checadas)
Conversion Error conversionError
Coloca información de los errores convirtiendo cadenas a los tipos de parámetros adecuados para los
campos del 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.
Logging logger Proporciona un logging (salida a bitácora) simple, mostrando el nombre del Actionque se está ejecutando.
Parameters params Establece los parámetros de la petición en el Action.
Prepare prepare Llama al método "prepare" en los acciones que implementan la interface "Preparable"
Servlet
Configuration
servletConfig Proporciona al Action acceso a información basada en Servlets.
Roles roles Permite que el Action se ejecutado solo si el usuario tiene uno de los roles configurados.
Timer timer Proporciona una información sencilla de cuánto tiempo tardo el Action en ejecutarse.
Validation Validation Proporciona a los Actions soporte para validaciones de datos.
Workflow Workflow Redirige al result "INPUT" sin ejecutar el Action cuando una validación falla.
Interceptores
Proporcionan
características
especiales a
las Actions
Se pueden
crear pilas de
interceptores
y elegir el
orden de uso
Nombre del Stack Interceptores Incluidos Descripción
basicStack
exception, servletConfig, prepare,
checkbox, multiselect,
actionMappingParams, params,
conversionError
Los interceptores que se espera se usen en todos los casos,
hasta los más básicos.
validationWorkflowStack 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 del stack básico.
paramsPrepareParamsStack
alias, i18n, checkbox, multiselect, params,
servletConfig, prepare, chain,
modelDriven, fileUpload, staticParams,
actionMappingParams, params,
conversionError, validation, workflow
Proporciona un stack completo para manejo de casi
cualquier cosa que necesitemos en nuestras aplicaciones.
El interceptor "params" se aplica dos veces, la primera vez
proporciona los parámetros antes de que el método
"prepare" sea llamado, y la segunda vez re-aplica los
parámetros a los objetos que hayan podido ser
recuperados durante la fase de preparación.
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.
executeAndWaitStack execAndWait, defaultStack, execAndWait
Proporciona al stack básico las características de execute
and wait, lo cual funciona para aplicaciones en las que
deben subirse archivos que pueden tardar algún tiempo.
Acciones
Clases para la
gestión de la
lógica
de las peticiones
Acciones
package es.pgg.struts.prueba;
import com.opensymphony.xwork2.ActionSupport;
/**
* Base Action class for the Tutorial package.
*/
public class BaseAction extends ActionSupport {
}
Métodos públicos con
String de resultado
public String execute() throws Exception {
// La lógica que queramos.
return SUCCESS;
}
Ideal que
implementen la
interfaz Action o que
extiendan de la clase
ActionSupport
Results
Tipos de
resultados posibles
de una Acción
Results
Básicos
SUCCESS
NONE
ERROR
INPUT
LOGIN
Son Strings
Funcionamiento
1 2
3
4
5
67
Struts
Prepare
And
Execute
Filter
Configurar struts
Web.xml
Struts.xml
Web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-
app_2_4.xsd">
<display-name>Prueba Struts</display-name> NOMBRE QUE MOSTRARA LA APLICACIÓN
<filter> FILTRO Y CLASE QUE RECOJE LAS PETICIONES
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping> PETICIONES QUE PASAN POR EL FILTRO struts2
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<welcome-file-list> PAGINA INICIAL PARA ENTRAR A LA APLICACIÓN
<welcome-file>index.html</welcome-file>
</welcome-file-list>
</web-app>
Struts.xml
Archivo más
importante
del proyecto
Struts.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
</struts>
Aquí dentro irá toda la
configuración
<constant name="struts.devMode" value="true" />
<constant name="struts.configuration.xml.reload" value="true" />
<package name="demo-struts" extends="struts-default">
</package>
<action name="index">
</action>
<result name="success">/index.jsp</result>
<action name="saludoUsuario“
class=“es.pgg.actions.SaludoUsuarioAction“>
<result>/saludoUsuario.jsp</result>
</action>
<action name=“despedirUsuario“
class=“es.pgg.actions.DespedirUsuarioAction“ method=“doHola”>
<result>/saludoUsuario.jsp</result>
</action>
A practicar
Crear
un
proyecto
Pasos a seguir
Descargar Struts
Descargar Struts
Pasos a seguir
Crear el proyecto
en el IDE
Pasos a seguir
Importar las
librerías
Es importante
ser ordenado
Importar las librerías
• commons-fileupload-X.X.X.jar
• commons-io-X.X.X.jar
• commons-lang-X.X.jar
• freemarker-X.X.X.jar
• javassist-X.X.X.GA.jar
• ognl-X.X.X.jar
• struts2-core-X.X.X.jar
• xwork-core-X.X.X.jar
Librerías básicas
Pasos a seguir
Crear el archivo
Web.xml
Pasos a seguir
Crear el archivo
Struts.xml
Pasos a seguir
Crear la primera
Action
Crear la primera Action
package es.pgg.struts;
import com.opensymphony.xwork2.ActionSupport;
/**
* Base Action class for the Tutorial package.
*/
public class BaseAction extends ActionSupport {
}
public String execute() throws Exception {
int numero = 4;
String nombre = “Patxi”;
// La lógica que queramos.
return SUCCESS;
}
Crear la primera Action
Falta su entrada en Struts.xml
<action name="saludoUsuario“ class=“es.pgg.struts.BaseAction“>
<result>/saludoUsuario.jsp</result>
</action>
Pasos a seguir
Crear la JSP
resultado
Crear la JSP resultado
Es lo que se
mostrara como resultado
<?xml version="1.0" encoding="UTF-8"?>
<%@taglib uri="/struts-tags" prefix="s" %>
<html >
<head>
<title>Prueba byPGG</title>
</head>
<body>
<s:form action="saludoUsuario">
<s:textfield label="Nombre" name="nombre"/>
<s:textfield label="Número de la suerte" name="numero"/>
<s:submit value="Enviar" />
</s:form>
</body>
</html>
Pasos a seguir
Crear el
contenedor WAR
Crear el contenedor WAR
WAR
Web Aplication aRchive
Crear el contenedor WAR
Contenido del WAR
Crear el contenedor WAR
Contenido del WAR
WEB-INF
Crear el contenedor WAR
Contenido del WAR
WEB-INF
lib
Pasos a seguir
Desplegarlo en
Tomcat
Desplegarlo en Tomcat
Copiar el archivo WAR en
Webapps
Al arrancar Tomcat, se desplegara
solo
Gran camino
Veréis cosas
muy raras
¿Perdidos?
Gran comunidad
Mucha ayuda
Struts2

Más contenido relacionado

La actualidad más candente

La actualidad más candente (20)

Statement
StatementStatement
Statement
 
Procedimientos almacenados en MySQL
Procedimientos almacenados en MySQLProcedimientos almacenados en MySQL
Procedimientos almacenados en MySQL
 
Statement
StatementStatement
Statement
 
Struts en Java
Struts en JavaStruts en Java
Struts en Java
 
Continuación 3 de la creación de reportes con jasper report
Continuación 3 de la creación de reportes con jasper reportContinuación 3 de la creación de reportes con jasper report
Continuación 3 de la creación de reportes con jasper report
 
5. Curso Java Struts I (Framework para Java) - Curso 2005-2006
5. Curso Java Struts I (Framework para Java) - Curso 2005-20065. Curso Java Struts I (Framework para Java) - Curso 2005-2006
5. Curso Java Struts I (Framework para Java) - Curso 2005-2006
 
Conectar java con una base de datos
Conectar java con una base de datosConectar java con una base de datos
Conectar java con una base de datos
 
Sqlcommand
SqlcommandSqlcommand
Sqlcommand
 
Vistas
VistasVistas
Vistas
 
Connection
ConnectionConnection
Connection
 
Mejoras del lenguaje T-SQL 2012 (parte 2) | SolidQ Summit 2012
Mejoras del lenguaje T-SQL 2012 (parte 2) | SolidQ Summit 2012Mejoras del lenguaje T-SQL 2012 (parte 2) | SolidQ Summit 2012
Mejoras del lenguaje T-SQL 2012 (parte 2) | SolidQ Summit 2012
 
PROCEDIMIENTOS ALMACENADOS
PROCEDIMIENTOS ALMACENADOSPROCEDIMIENTOS ALMACENADOS
PROCEDIMIENTOS ALMACENADOS
 
Introducción a Java Persistence API
Introducción a Java Persistence APIIntroducción a Java Persistence API
Introducción a Java Persistence API
 
JPA en Netbeans
JPA en NetbeansJPA en Netbeans
JPA en Netbeans
 
Uso java jdbc
Uso java jdbcUso java jdbc
Uso java jdbc
 
Prepared statement
Prepared statementPrepared statement
Prepared statement
 
Procedimientos Almacenados
Procedimientos AlmacenadosProcedimientos Almacenados
Procedimientos Almacenados
 
Statement
StatementStatement
Statement
 
Ser vlet conectar con base de datos
Ser vlet conectar con base de datosSer vlet conectar con base de datos
Ser vlet conectar con base de datos
 
Statement
StatementStatement
Statement
 

Similar a Struts2

Java struts2 - 03 componentes de la aplicacion
Java   struts2 - 03 componentes de la aplicacionJava   struts2 - 03 componentes de la aplicacion
Java struts2 - 03 componentes de la aplicacion
Jechu2013
 
Java WebServices JaxWS - JaxRs
Java WebServices JaxWS - JaxRsJava WebServices JaxWS - JaxRs
Java WebServices JaxWS - JaxRs
Hernan Rengifo
 
Construccion a través de compontes
Construccion a través de compontesConstruccion a través de compontes
Construccion a través de compontes
jalzate
 
Guia de estudio para Oracle Certified Java EE 6 Web Component Developer
Guia de estudio para Oracle Certified Java EE 6 Web Component DeveloperGuia de estudio para Oracle Certified Java EE 6 Web Component Developer
Guia de estudio para Oracle Certified Java EE 6 Web Component Developer
Oscar V
 
FMK Capa de Presentacion
FMK Capa de PresentacionFMK Capa de Presentacion
FMK Capa de Presentacion
kaolong
 
Hands-on Spring 3: The next generation
Hands-on Spring 3: The next generationHands-on Spring 3: The next generation
Hands-on Spring 3: The next generation
Sergi Almar i Graupera
 

Similar a Struts2 (20)

Tutorial struts 2
Tutorial struts 2Tutorial struts 2
Tutorial struts 2
 
Manual Basico De Struts
Manual Basico De StrutsManual Basico De Struts
Manual Basico De Struts
 
01 introducción
01 introducción01 introducción
01 introducción
 
Java struts2 - 03 componentes de la aplicacion
Java   struts2 - 03 componentes de la aplicacionJava   struts2 - 03 componentes de la aplicacion
Java struts2 - 03 componentes de la aplicacion
 
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
 
Java WebServices JaxWS - JaxRs
Java WebServices JaxWS - JaxRsJava WebServices JaxWS - JaxRs
Java WebServices JaxWS - JaxRs
 
Aplicaciones web con jakarta struts - Javier Oliver Fulguera
Aplicaciones web con jakarta struts  - Javier Oliver FulgueraAplicaciones web con jakarta struts  - Javier Oliver Fulguera
Aplicaciones web con jakarta struts - Javier Oliver Fulguera
 
Strust
StrustStrust
Strust
 
Construccion a través de compontes
Construccion a través de compontesConstruccion a través de compontes
Construccion a través de compontes
 
Enterprise Library 5
Enterprise Library 5Enterprise Library 5
Enterprise Library 5
 
15a. Reunion de SpringHispano.org y grails.org.mx
15a. Reunion de SpringHispano.org y grails.org.mx15a. Reunion de SpringHispano.org y grails.org.mx
15a. Reunion de SpringHispano.org y grails.org.mx
 
XQuery y XPath for SQL Server 2012 itpros dc_chapter6
XQuery y XPath for SQL Server 2012 itpros dc_chapter6XQuery y XPath for SQL Server 2012 itpros dc_chapter6
XQuery y XPath for SQL Server 2012 itpros dc_chapter6
 
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
 
Año del buen servicio al cuidadano
Año del buen servicio al cuidadanoAño del buen servicio al cuidadano
Año del buen servicio al cuidadano
 
Guia de estudio para Oracle Certified Java EE 6 Web Component Developer
Guia de estudio para Oracle Certified Java EE 6 Web Component DeveloperGuia de estudio para Oracle Certified Java EE 6 Web Component Developer
Guia de estudio para Oracle Certified Java EE 6 Web Component Developer
 
FMK Capa de Presentacion
FMK Capa de PresentacionFMK Capa de Presentacion
FMK Capa de Presentacion
 
Java Web - Struts
Java Web - StrutsJava Web - Struts
Java Web - Struts
 
Hands-on Spring 3: The next generation
Hands-on Spring 3: The next generationHands-on Spring 3: The next generation
Hands-on Spring 3: The next generation
 
Statement
StatementStatement
Statement
 

Struts2

  • 1. 2
  • 2. Nombre: Historia Craig McClanahan Importante por: Creador de Struts En el año 2000 entrega Struts a Apache Software Foundation (ASF) En 2005 unieron Struts con WebWork para crear Struts 2
  • 3. Desarrollo Web FrameWork basado en XML para desarrollo Web
  • 6. Plugins Instalación transparente para el usuario, solo hay que meterlo en el classpath
  • 7. Lenguaje OGNL Object Graph Navigation Language Permite leer objetos Java en las JSPs utilizando las etiquetas de Struts
  • 8. Interceptores Clases para la gestión de entradas/salidas en las Actions
  • 9. 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 marcadas (o checadas) Conversion Error conversionError Coloca información de los errores convirtiendo cadenas a los tipos de parámetros adecuados para los campos del 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. Logging logger Proporciona un logging (salida a bitácora) simple, mostrando el nombre del Actionque se está ejecutando. Parameters params Establece los parámetros de la petición en el Action. Prepare prepare Llama al método "prepare" en los acciones que implementan la interface "Preparable" Servlet Configuration servletConfig Proporciona al Action acceso a información basada en Servlets. Roles roles Permite que el Action se ejecutado solo si el usuario tiene uno de los roles configurados. Timer timer Proporciona una información sencilla de cuánto tiempo tardo el Action en ejecutarse. Validation Validation Proporciona a los Actions soporte para validaciones de datos. Workflow Workflow Redirige al result "INPUT" sin ejecutar el Action cuando una validación falla.
  • 10. Interceptores Proporcionan características especiales a las Actions Se pueden crear pilas de interceptores y elegir el orden de uso
  • 11. Nombre del Stack Interceptores Incluidos Descripción basicStack exception, servletConfig, prepare, checkbox, multiselect, actionMappingParams, params, conversionError Los interceptores que se espera se usen en todos los casos, hasta los más básicos. validationWorkflowStack 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 del stack básico. paramsPrepareParamsStack alias, i18n, checkbox, multiselect, params, servletConfig, prepare, chain, modelDriven, fileUpload, staticParams, actionMappingParams, params, conversionError, validation, workflow Proporciona un stack completo para manejo de casi cualquier cosa que necesitemos en nuestras aplicaciones. El interceptor "params" se aplica dos veces, la primera vez proporciona los parámetros antes de que el método "prepare" sea llamado, y la segunda vez re-aplica los parámetros a los objetos que hayan podido ser recuperados durante la fase de preparación. 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. executeAndWaitStack execAndWait, defaultStack, execAndWait Proporciona al stack básico las características de execute and wait, lo cual funciona para aplicaciones en las que deben subirse archivos que pueden tardar algún tiempo.
  • 12. Acciones Clases para la gestión de la lógica de las peticiones
  • 13. Acciones package es.pgg.struts.prueba; import com.opensymphony.xwork2.ActionSupport; /** * Base Action class for the Tutorial package. */ public class BaseAction extends ActionSupport { } Métodos públicos con String de resultado public String execute() throws Exception { // La lógica que queramos. return SUCCESS; } Ideal que implementen la interfaz Action o que extiendan de la clase ActionSupport
  • 18. Web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web- app_2_4.xsd"> <display-name>Prueba Struts</display-name> NOMBRE QUE MOSTRARA LA APLICACIÓN <filter> FILTRO Y CLASE QUE RECOJE LAS PETICIONES <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> </filter> <filter-mapping> PETICIONES QUE PASAN POR EL FILTRO struts2 <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <welcome-file-list> PAGINA INICIAL PARA ENTRAR A LA APLICACIÓN <welcome-file>index.html</welcome-file> </welcome-file-list> </web-app>
  • 20. Struts.xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> </struts> Aquí dentro irá toda la configuración <constant name="struts.devMode" value="true" /> <constant name="struts.configuration.xml.reload" value="true" /> <package name="demo-struts" extends="struts-default"> </package> <action name="index"> </action> <result name="success">/index.jsp</result> <action name="saludoUsuario“ class=“es.pgg.actions.SaludoUsuarioAction“> <result>/saludoUsuario.jsp</result> </action> <action name=“despedirUsuario“ class=“es.pgg.actions.DespedirUsuarioAction“ method=“doHola”> <result>/saludoUsuario.jsp</result> </action>
  • 25. Pasos a seguir Crear el proyecto en el IDE
  • 26. Pasos a seguir Importar las librerías
  • 28. Importar las librerías • commons-fileupload-X.X.X.jar • commons-io-X.X.X.jar • commons-lang-X.X.jar • freemarker-X.X.X.jar • javassist-X.X.X.GA.jar • ognl-X.X.X.jar • struts2-core-X.X.X.jar • xwork-core-X.X.X.jar Librerías básicas
  • 29. Pasos a seguir Crear el archivo Web.xml
  • 30. Pasos a seguir Crear el archivo Struts.xml
  • 31. Pasos a seguir Crear la primera Action
  • 32. Crear la primera Action package es.pgg.struts; import com.opensymphony.xwork2.ActionSupport; /** * Base Action class for the Tutorial package. */ public class BaseAction extends ActionSupport { } public String execute() throws Exception { int numero = 4; String nombre = “Patxi”; // La lógica que queramos. return SUCCESS; }
  • 33. Crear la primera Action Falta su entrada en Struts.xml <action name="saludoUsuario“ class=“es.pgg.struts.BaseAction“> <result>/saludoUsuario.jsp</result> </action>
  • 34. Pasos a seguir Crear la JSP resultado
  • 35. Crear la JSP resultado Es lo que se mostrara como resultado <?xml version="1.0" encoding="UTF-8"?> <%@taglib uri="/struts-tags" prefix="s" %> <html > <head> <title>Prueba byPGG</title> </head> <body> <s:form action="saludoUsuario"> <s:textfield label="Nombre" name="nombre"/> <s:textfield label="Número de la suerte" name="numero"/> <s:submit value="Enviar" /> </s:form> </body> </html>
  • 36. Pasos a seguir Crear el contenedor WAR
  • 37. Crear el contenedor WAR WAR Web Aplication aRchive
  • 38. Crear el contenedor WAR Contenido del WAR
  • 39. Crear el contenedor WAR Contenido del WAR WEB-INF
  • 40. Crear el contenedor WAR Contenido del WAR WEB-INF lib
  • 42. Desplegarlo en Tomcat Copiar el archivo WAR en Webapps Al arrancar Tomcat, se desplegara solo
  • 46.