struts2

49
2

Upload: patxi-galan-garcia

Post on 13-Jun-2015

340 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Struts2

2

Page 2: Struts2

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

Desarrollo Web

FrameWork basado en XML para

desarrollo Web

Page 4: Struts2

Modelo MVC

VistaControlador

Modelo

Usuarios

Envía una petición

Solucionar

Actualiza

Mostrar

Page 5: Struts2

Gran integración

Usar diferentes FrameWorks en la capa del Modelo

Page 6: Struts2

Plugins

Instalación transparente para el usuario, solo hay que meterlo en el classpath

Page 7: Struts2

Lenguaje OGNL

Object Graph Navigation Language

Permite leer objetos Java

en las JSPs utilizando las

etiquetas de Struts

Page 8: Struts2

Interceptores

Clases para la gestión de

entradas/salidasen las Actions

Page 9: Struts2

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

Interceptores

Proporcionan características especiales a las Actions

Se pueden crear pilas de interceptores

y elegir el orden de uso

Page 11: Struts2

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

Acciones

Clases para la gestión de la

lógica de las peticiones

Page 13: Struts2

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

Results

Tipos de resultados posibles

de una Acción

Page 15: Struts2

Results

Básicos

SUCCESSNONEERRORINPUTLOGIN

Son Strings

Page 16: Struts2

Funcionamiento1 2

3

4

567

StrutsPrepare

AndExecute

Filter

Page 17: Struts2

Configurar struts

Web.xml

Struts.xml

Page 18: Struts2

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

Struts.xml

Archivo más importante del proyecto

Page 20: Struts2

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

A practicar

Page 22: Struts2

Crear un

proyecto

Page 23: Struts2

Pasos a seguir

1 Descargar Struts

Page 24: Struts2

Descargar Struts

Page 25: Struts2

Pasos a seguir

2 Crear el proyecto en el IDE

Page 26: Struts2

Pasos a seguir

3 Importar las librerías

Page 27: Struts2

Es importante ser ordenado

Page 28: Struts2

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

Pasos a seguir

4 Crear el archivo Web.xml

Page 30: Struts2

Pasos a seguir

5 Crear el archivo Struts.xml

Page 31: Struts2

Pasos a seguir

6 Crear la primera Action

Page 32: Struts2

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

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

Pasos a seguir

7 Crear la JSP resultado

Page 35: Struts2

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

Pasos a seguir

8 Crear el contenedor WAR

Page 37: Struts2

Crear el contenedor WAR

WAR Web Aplication aRchive

Page 38: Struts2

Crear el contenedor WAR

Contenido del WAR

Page 39: Struts2

Crear el contenedor WARContenido del WAR

WEB-INF

Page 40: Struts2

Crear el contenedor WAR

Contenido del WAR WEB-INF

lib

Page 41: Struts2

Pasos a seguir

9 Desplegarlo en Tomcat

Page 42: Struts2

Desplegarlo en Tomcat

Copiar el archivo WAR en Webapps

Al arrancar Tomcat, se desplegara solo

Page 43: Struts2

Gran camino

Page 44: Struts2

Veréis cosas muy raras

Page 45: Struts2

¿Perdidos?

Page 46: Struts2
Page 47: Struts2

Gran comunidad

Page 48: Struts2

Mucha ayuda

Page 49: Struts2

Se fi ní