struts2

Post on 13-Jun-2015

340 Views

Category:

Documents

3 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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