struts2
TRANSCRIPT
![Page 1: Struts2](https://reader036.vdocuments.co/reader036/viewer/2022062514/557b5f55d8b42a90078b5347/html5/thumbnails/1.jpg)
2
![Page 2: Struts2](https://reader036.vdocuments.co/reader036/viewer/2022062514/557b5f55d8b42a90078b5347/html5/thumbnails/2.jpg)
Nombre:
HistoriaCraig 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
![Page 3: Struts2](https://reader036.vdocuments.co/reader036/viewer/2022062514/557b5f55d8b42a90078b5347/html5/thumbnails/3.jpg)
Desarrollo Web
FrameWork basado en XML para
desarrollo Web
![Page 4: Struts2](https://reader036.vdocuments.co/reader036/viewer/2022062514/557b5f55d8b42a90078b5347/html5/thumbnails/4.jpg)
Modelo MVC
VistaControlador
Modelo
Usuarios
Envía una petición
Solucionar
Actualiza
Mostrar
![Page 5: Struts2](https://reader036.vdocuments.co/reader036/viewer/2022062514/557b5f55d8b42a90078b5347/html5/thumbnails/5.jpg)
Gran integración
Usar diferentes FrameWorks en la capa del Modelo
![Page 6: Struts2](https://reader036.vdocuments.co/reader036/viewer/2022062514/557b5f55d8b42a90078b5347/html5/thumbnails/6.jpg)
Plugins
Instalación transparente para el usuario, solo hay que meterlo en el classpath
![Page 7: Struts2](https://reader036.vdocuments.co/reader036/viewer/2022062514/557b5f55d8b42a90078b5347/html5/thumbnails/7.jpg)
Lenguaje OGNL
Object Graph Navigation Language
Permite leer objetos Java
en las JSPs utilizando las
etiquetas de Struts
![Page 8: Struts2](https://reader036.vdocuments.co/reader036/viewer/2022062514/557b5f55d8b42a90078b5347/html5/thumbnails/8.jpg)
Interceptores
Clases para la gestión de
entradas/salidasen las Actions
![Page 9: Struts2](https://reader036.vdocuments.co/reader036/viewer/2022062514/557b5f55d8b42a90078b5347/html5/thumbnails/9.jpg)
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.
![Page 10: Struts2](https://reader036.vdocuments.co/reader036/viewer/2022062514/557b5f55d8b42a90078b5347/html5/thumbnails/10.jpg)
Interceptores
Proporcionan características especiales a las Actions
Se pueden crear pilas de interceptores
y elegir el orden de uso
![Page 11: Struts2](https://reader036.vdocuments.co/reader036/viewer/2022062514/557b5f55d8b42a90078b5347/html5/thumbnails/11.jpg)
Nombre del Stack Interceptores Incluidos Descripción
basicStackexception, 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, execAndWaitProporciona 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.
![Page 12: Struts2](https://reader036.vdocuments.co/reader036/viewer/2022062514/557b5f55d8b42a90078b5347/html5/thumbnails/12.jpg)
Acciones
Clases para la gestión de la
lógica de las peticiones
![Page 13: Struts2](https://reader036.vdocuments.co/reader036/viewer/2022062514/557b5f55d8b42a90078b5347/html5/thumbnails/13.jpg)
Accionespackage 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
![Page 14: Struts2](https://reader036.vdocuments.co/reader036/viewer/2022062514/557b5f55d8b42a90078b5347/html5/thumbnails/14.jpg)
Results
Tipos de resultados posibles
de una Acción
![Page 15: Struts2](https://reader036.vdocuments.co/reader036/viewer/2022062514/557b5f55d8b42a90078b5347/html5/thumbnails/15.jpg)
Results
Básicos
SUCCESSNONEERRORINPUTLOGIN
Son Strings
![Page 16: Struts2](https://reader036.vdocuments.co/reader036/viewer/2022062514/557b5f55d8b42a90078b5347/html5/thumbnails/16.jpg)
Funcionamiento1 2
3
4
567
StrutsPrepare
AndExecute
Filter
![Page 17: Struts2](https://reader036.vdocuments.co/reader036/viewer/2022062514/557b5f55d8b42a90078b5347/html5/thumbnails/17.jpg)
Configurar struts
Web.xml
Struts.xml
![Page 18: Struts2](https://reader036.vdocuments.co/reader036/viewer/2022062514/557b5f55d8b42a90078b5347/html5/thumbnails/18.jpg)
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>
![Page 19: Struts2](https://reader036.vdocuments.co/reader036/viewer/2022062514/557b5f55d8b42a90078b5347/html5/thumbnails/19.jpg)
Struts.xml
Archivo más importante del proyecto
![Page 20: Struts2](https://reader036.vdocuments.co/reader036/viewer/2022062514/557b5f55d8b42a90078b5347/html5/thumbnails/20.jpg)
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>
![Page 21: Struts2](https://reader036.vdocuments.co/reader036/viewer/2022062514/557b5f55d8b42a90078b5347/html5/thumbnails/21.jpg)
A practicar
![Page 22: Struts2](https://reader036.vdocuments.co/reader036/viewer/2022062514/557b5f55d8b42a90078b5347/html5/thumbnails/22.jpg)
Crear un
proyecto
![Page 23: Struts2](https://reader036.vdocuments.co/reader036/viewer/2022062514/557b5f55d8b42a90078b5347/html5/thumbnails/23.jpg)
Pasos a seguir
1 Descargar Struts
![Page 24: Struts2](https://reader036.vdocuments.co/reader036/viewer/2022062514/557b5f55d8b42a90078b5347/html5/thumbnails/24.jpg)
Descargar Struts
![Page 25: Struts2](https://reader036.vdocuments.co/reader036/viewer/2022062514/557b5f55d8b42a90078b5347/html5/thumbnails/25.jpg)
Pasos a seguir
2 Crear el proyecto en el IDE
![Page 26: Struts2](https://reader036.vdocuments.co/reader036/viewer/2022062514/557b5f55d8b42a90078b5347/html5/thumbnails/26.jpg)
Pasos a seguir
3 Importar las librerías
![Page 27: Struts2](https://reader036.vdocuments.co/reader036/viewer/2022062514/557b5f55d8b42a90078b5347/html5/thumbnails/27.jpg)
Es importante ser ordenado
![Page 28: Struts2](https://reader036.vdocuments.co/reader036/viewer/2022062514/557b5f55d8b42a90078b5347/html5/thumbnails/28.jpg)
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
![Page 29: Struts2](https://reader036.vdocuments.co/reader036/viewer/2022062514/557b5f55d8b42a90078b5347/html5/thumbnails/29.jpg)
Pasos a seguir
4 Crear el archivo Web.xml
![Page 30: Struts2](https://reader036.vdocuments.co/reader036/viewer/2022062514/557b5f55d8b42a90078b5347/html5/thumbnails/30.jpg)
Pasos a seguir
5 Crear el archivo Struts.xml
![Page 31: Struts2](https://reader036.vdocuments.co/reader036/viewer/2022062514/557b5f55d8b42a90078b5347/html5/thumbnails/31.jpg)
Pasos a seguir
6 Crear la primera Action
![Page 32: Struts2](https://reader036.vdocuments.co/reader036/viewer/2022062514/557b5f55d8b42a90078b5347/html5/thumbnails/32.jpg)
Crear la primera Actionpackage 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;}
![Page 33: Struts2](https://reader036.vdocuments.co/reader036/viewer/2022062514/557b5f55d8b42a90078b5347/html5/thumbnails/33.jpg)
Crear la primera Action
Falta su entrada en Struts.xml
<action name="saludoUsuario“ class=“es.pgg.struts.BaseAction“> <result>/saludoUsuario.jsp</result> </action>
![Page 34: Struts2](https://reader036.vdocuments.co/reader036/viewer/2022062514/557b5f55d8b42a90078b5347/html5/thumbnails/34.jpg)
Pasos a seguir
7 Crear la JSP resultado
![Page 35: Struts2](https://reader036.vdocuments.co/reader036/viewer/2022062514/557b5f55d8b42a90078b5347/html5/thumbnails/35.jpg)
Crear la JSP resultadoEs 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>
![Page 36: Struts2](https://reader036.vdocuments.co/reader036/viewer/2022062514/557b5f55d8b42a90078b5347/html5/thumbnails/36.jpg)
Pasos a seguir
8 Crear el contenedor WAR
![Page 37: Struts2](https://reader036.vdocuments.co/reader036/viewer/2022062514/557b5f55d8b42a90078b5347/html5/thumbnails/37.jpg)
Crear el contenedor WAR
WAR Web Aplication aRchive
![Page 38: Struts2](https://reader036.vdocuments.co/reader036/viewer/2022062514/557b5f55d8b42a90078b5347/html5/thumbnails/38.jpg)
Crear el contenedor WAR
Contenido del WAR
![Page 39: Struts2](https://reader036.vdocuments.co/reader036/viewer/2022062514/557b5f55d8b42a90078b5347/html5/thumbnails/39.jpg)
Crear el contenedor WARContenido del WAR
WEB-INF
![Page 40: Struts2](https://reader036.vdocuments.co/reader036/viewer/2022062514/557b5f55d8b42a90078b5347/html5/thumbnails/40.jpg)
Crear el contenedor WAR
Contenido del WAR WEB-INF
lib
![Page 41: Struts2](https://reader036.vdocuments.co/reader036/viewer/2022062514/557b5f55d8b42a90078b5347/html5/thumbnails/41.jpg)
Pasos a seguir
9 Desplegarlo en Tomcat
![Page 42: Struts2](https://reader036.vdocuments.co/reader036/viewer/2022062514/557b5f55d8b42a90078b5347/html5/thumbnails/42.jpg)
Desplegarlo en Tomcat
Copiar el archivo WAR en Webapps
Al arrancar Tomcat, se desplegara solo
![Page 43: Struts2](https://reader036.vdocuments.co/reader036/viewer/2022062514/557b5f55d8b42a90078b5347/html5/thumbnails/43.jpg)
Gran camino
![Page 44: Struts2](https://reader036.vdocuments.co/reader036/viewer/2022062514/557b5f55d8b42a90078b5347/html5/thumbnails/44.jpg)
Veréis cosas muy raras
![Page 45: Struts2](https://reader036.vdocuments.co/reader036/viewer/2022062514/557b5f55d8b42a90078b5347/html5/thumbnails/45.jpg)
¿Perdidos?
![Page 46: Struts2](https://reader036.vdocuments.co/reader036/viewer/2022062514/557b5f55d8b42a90078b5347/html5/thumbnails/46.jpg)
![Page 47: Struts2](https://reader036.vdocuments.co/reader036/viewer/2022062514/557b5f55d8b42a90078b5347/html5/thumbnails/47.jpg)
Gran comunidad
![Page 48: Struts2](https://reader036.vdocuments.co/reader036/viewer/2022062514/557b5f55d8b42a90078b5347/html5/thumbnails/48.jpg)
Mucha ayuda
![Page 49: Struts2](https://reader036.vdocuments.co/reader036/viewer/2022062514/557b5f55d8b42a90078b5347/html5/thumbnails/49.jpg)
Se fi ní