2
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
Desarrollo Web
FrameWork basado en XML para
desarrollo Web
Modelo MVC
VistaControlador
Modelo
Usuarios
Envía una petición
Solucionar
Actualiza
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/salidasen 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
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.
Acciones
Clases para la gestión de la
lógica de las peticiones
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
Results
Tipos de resultados posibles
de una Acción
Results
Básicos
SUCCESSNONEERRORINPUTLOGIN
Son Strings
Funcionamiento1 2
3
4
567
StrutsPrepare
AndExecute
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
1 Descargar Struts
Descargar Struts
Pasos a seguir
2 Crear el proyecto en el IDE
Pasos a seguir
3 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
4 Crear el archivo Web.xml
Pasos a seguir
5 Crear el archivo Struts.xml
Pasos a seguir
6 Crear la primera Action
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;}
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
7 Crear la JSP resultado
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>
Pasos a seguir
8 Crear el contenedor WAR
Crear el contenedor WAR
WAR Web Aplication aRchive
Crear el contenedor WAR
Contenido del WAR
Crear el contenedor WARContenido del WAR
WEB-INF
Crear el contenedor WAR
Contenido del WAR WEB-INF
lib
Pasos a seguir
9 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
Se fi ní
Top Related