PDF de programación - Sesión 1. Introducción a Struts: el controlador y las acciones

Imágen de pdf Sesión 1. Introducción a Struts: el controlador y las acciones

Sesión 1. Introducción a Struts: el controlador y las accionesgráfica de visualizaciones

Publicado el 22 de Enero del 2019
401 visualizaciones desde el 22 de Enero del 2019
454,3 KB
26 paginas
Creado hace 13a (10/12/2010)
Especialista Universitario Java Enterprise

Struts

Sesión 1. Introducción a Struts: el

controlador y las acciones

© 2010-2011 Depto. Ciencia de la Computación e IA

Especialista Universitario Java Enterprise

Indice
• Introducción a Struts y a MVC
• Instalación de Struts
• El “ciclo de control” en Struts
• Las acciones
• Gestión de errores en las acciones

© 2010-2011/ Depto. Ciencia de la Computación e IA

MVC y Struts 2

Especialista Universitario Java Enterprise

Struts como framework MVC
• ¿Por qué Struts?

• Es un estándar “de facto”. Amplia comunidad de

desarrolladores. Mucha documentación y ejemplos.

• Problema: en muchos aspectos es tedioso (configuración) y

poco flexible. Se ha quedado un poco “antiguo”.

• ¿Hay alternativas?

• JavaServer Faces (centrado en el GUI)
• Spring

• Versiones de Struts

• Veremos la 1.3
• Struts 2: mucho más flexible y sencillo, aunque no ha tenido

tanto éxito

© 2010-2011/ Depto. Ciencia de la Computación e IA

MVC y Struts 3

Especialista Universitario Java Enterprise

Ejemplo real de MVC: pizzas para llevar

Pepperoni y anchoas!

Una 7!

Controlador

Vista

Modelo

© 2011-2010/ Depto. Ciencia de la Computación e IA

MVC y Struts 4

Especialista Universitario Java Enterprise

Ejemplo no tan real (JavaEE)

verPedido.mvc?id=7

Servlet

Controlador

GestorPedidos.getPedido(7)

Pedido

Pedido

pedido.jsp

JDBC

Modelo

Clases Java

Presentación

Lógica de negocio

Acceso a datos

© 2010-2011/ Depto. Ciencia de la Computación e IA

MVC y Struts 5

Especialista Universitario Java Enterprise

Flujo de MVC en Struts

verPedido.mvc?id=7

Servlet (ya hecho en Struts)

Controlador

Ejecutar la acción “ver Pedido”

Clase java propia que debe heredar
de una de Struts

GestorPedidos.getPedido(7)

Acción

“verPedido”

Pedido

Modelo

JDBC

Pedido

pedido.jsp

Clases Java propias

© 2010-2011/ Depto. Ciencia de la Computación e IA

MVC y Struts 6

Especialista Universitario Java Enterprise

Indice
• Introducción a Struts y repaso de MVC
• Instalación de Struts
• El “ciclo de control” en Struts
• Las acciones
• Gestión de errores en las acciones

© 2010-2011/ Depto. Ciencia de la Computación e IA

MVC y Struts 7

Especialista Universitario Java Enterprise

Desarrollar con Struts: instalación
• Incluir una serie de .jar en el WEB-INF
• Crear y mantener el fichero de configuración

principal
• WEB-INF/struts-config.xml

• Crear y mantener ficheros de recursos

(.properties)
• Básicamente mensajes de error, avisos, etc.

• Hay una serie de plugins adicionales. Veremos

el validator.

© 2010-2011/ Depto. Ciencia de la Computación e IA

MVC y Struts 8

Especialista Universitario Java Enterprise

El Servlet controlador

Ya está hecho en Struts


• Debemos configurar la aplicación para que todas las

peticiones vayan a parar al mismo servlet (en el web.xml)



<servlet>
<servlet-name>controlador</servlet-name>
<servlet-class>
org.apache.struts.action.ActionServlet
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>controlador</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>

© 2010-2011/ Depto. Ciencia de la Computación e IA

MVC y Struts 9

Especialista Universitario Java Enterprise

Indice
• Introducción a Struts y repaso de MVC
• Instalación de Struts
• El “ciclo de control” en Struts
• Las acciones
• Gestión de errores en las acciones

© 2010-2011/ Depto. Ciencia de la Computación e IA

MVC y Struts 10

Especialista Universitario Java Enterprise

El trabajo del servlet controlador

1. Recibir la petición: xxx.do
2. Buscar en struts-config.xml “lo que viene antes del .do”

para encontrar una clase que se corresponde con una
acción

login.do Ü es.ua.jtech.struts.presentacion.acciones.AccionLogin

1. Crear un nuevo objeto de esa clase y llamar al método

execute

2. El método execute devolverá un objeto ActionForward que

indica a qué página JSP hay que llamar

3. Volver al paso 1

© 2010-2011/ Depto. Ciencia de la Computación e IA

MVC y Struts 11

Especialista Universitario Java Enterprise

2. Mapeo petición-acción
• En struts-config.xml

<action-mappings>
<!-- hacer login -->
<action path="/login" type="acciones.AccionLogin">
<forward name="OK" path="/personal.jsp"/>
<forward name="errorUsuario" path="/error.html"/>
</action>
<!-- definición de otras acciones -->
</action-mappings>

...

URL

Acción

© 2010-2011/ Depto. Ciencia de la Computación e IA

MVC y Struts 12

Especialista Universitario Java Enterprise

3. Instanciar la acción y llamar a execute
• Clase que hereda de org.apache.struts.action.Action
import javax.servlet.http.*;
import org.apache.struts.action.Action;

//obtener login y password y autentificar al usuario
...
if (...)

public class AccionLogin extends Action {
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest req, HttpServletResponse resp){



}

else

return mapping.findForward("OK");

return mapping.findForward("errorUsuario");

© 2010-2011/ Depto. Ciencia de la Computación e IA

MVC y Struts 13

Especialista Universitario Java Enterprise

4. Mapeo ActionForward-vista
• En struts-config.xml

<action-mappings>
<!-- hacer login -->
<action path="/login" type="acciones.AccionLogin">
<forward name="OK" path="/personal.jsp"/>
<forward name="errorUsuario" path="/error.html"/>
</action>
<!-- definición de otras acciones -->
</action-mappings>

...

Resultados

© 2010-2011/ Depto. Ciencia de la Computación e IA

MVC y Struts 14

Especialista Universitario Java Enterprise

Forwards globales
• En struts-config.xml, accesibles a todas las

acciones

<forward name="errorUsuario" path="/error.html"/>

<global-forwards>
</global-forwards>
<action-mappings>

<!-- hacer login -->
<action path="/login" type="acciones.AccionLogin">
<forward name="OK" path="/personal.jsp"/>
<!-- definición de otras acciones -->
</action-mappings>

</action>

...

© 2010-2011/ Depto. Ciencia de la Computación e IA

MVC y Struts 15

Especialista Universitario Java Enterprise

Las acciones
• Normalmente habrá una clase por caso de uso

• AccionLogin
• AccionSeleccionarLibro
• AccionListarLibros

• También se puede hacer una acción para varias tareas:

AccionLibro, con un parámetro HTTP diferencia entre seleccionar, listar,..

• Las acciones:

• Toman los parámetros de la petición HTTP
• Chequean errores en dichos parámetros
• Le piden al modelo que haga “el trabajo sucio” y devuelva resultados
• Ponen los resultados en un ámbito accesible a los JSP (request,

response, session)

• Ceden el control al controlador

© 2010-2011/ Depto. Ciencia de la Computación e IA

MVC y Struts 16

Especialista Universitario Java Enterprise

Ejemplo de código de acción


UsuarioDAO dao = UsuarioDAO.getInstance();
Usuario u = dao.login(request.getParameter(“login”), request.getParameter(“password”));
if (u==null) {



ActionMessages errores = new ActionMessages();
errores.add(ActionMessages.GLOBAL_MESSAGE, new



}
else {



}


ActionMessage("error.login"));

saveErrors(request, errores);
//si hay error se debe volver al formulario de login
return mapping.findForward("error");

request.getSession().setAttribute("usuario", u);
//si todo va bien se debe mostrar la lista de tareas (tareas.jsp)
return mapping.findForward("OK");

© 2010-2011/ Depto. Ciencia de la Computación e IA

MVC y Struts 17

Especialista Universitario Java Enterprise

Indice
• Introducción a Struts y repaso de MVC
• Instalación de Struts
• El “ciclo de control” en Struts
• Las acciones
• Gestión de errores en las acciones

© 2010-2011/ Depto. Ciencia de la Computación e IA

MVC y Struts 18

Especialista Universitario Java Enterprise

Gestión de errores: pasos
1. Crear una lista de errores vacía (ActionMessages)
2. Añadir errores (ActionMessage) a la lista
3. Si la lista contiene errores

I. Guardar la lista en la petición HTTP (saveErrors)
II. Devolver un resultado (findForward) indicando error

4. En la página web a la que se salta, habrá

que mostrarlos (<html:messages>)

© 2010-2011/ Depto. Ciencia de la Computación e IA

MVC y Struts 19

Especialista Universitario Java Enterprise

Gestión de errores (II): código de la acción

ActionMessages errores = new ActionMessages();
try {
//código que ejecuta la lógica de negocio.
...
}
catch(Exception e) {
//añadir errores a la lista
errores.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("error.bd");
}
//comprobar si la lista de errores está vacía
if (!errores.empty()) {
//guardar los errores en la petición HTTP
saveErrors(request, errors);
//devolver un resultado que indique error
return mapping.findForward("error");
}

© 2010-2011/ Depto. Ciencia de la Computación e IA

MVC y Struts 20

Especialista Universitario Java Enterprise

Gestión de errores (III): mostrar los errores
• Se usa una taglib de Struts (HTML)

<!-- referenciar la taglib de Struts que include la etiqueta -->
<%@taglib uri="http://struts.apache.org/tags-html“ prefix="html" %>
...
<!-- mostrar los mensajes almacenados -->
<html:messages id="e">
<ul>
<li>${e}</li>
</ul>
</html:messages>

© 2010-2011/ Depto. Ciencia de la Computación e IA

MVC y Struts 21

Especialista Universitario Java Enterprise

¿Dónde están los mensajes de error?

• NO en el código Java, sino en un .properties

errores.add(ActionMessages.GLOBAL_MESSAGE,

new ActionMessage("error.bd");

• Ficheros de recursos: definidos en struts-config.xml

<message-resources parameter="util.recursos"/>

• En el fichero /WEB-INF/classes/util/recursos.properties

error.bd = se ha producido un error con la base de datos

© 2010-2011/ Depto. Ciencia de la Computación e IA

MVC y Struts 22

Especialista Un
  • Links de descarga
http://lwp-l.com/pdf14937

Comentarios de: Sesión 1. Introducción a Struts: el controlador y las acciones (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad