jueves, 18 de noviembre de 2010

STRUTS1 BASICO

Struts es un framework que implementa el patrón MVC. (como Spring-mvc y JSF p.ej).

El archivo de configuración de Struts es struts-config.xml. En este fichero se dan de alta los controladores (Actions en struts, por eso las págs. webs hechas en Struts tienen extensión .do), modelos y navegación (vistas destino de los controladores).

Ejercicio básico, controlar una petición url con struts1


VAMOS A TERMINAR INTEGRANDO STRUTS1 A tiendaWebProfe

Incluimos la librería de struts (VERSION=1), a través de maven

<dependency>
<groupId>struts</groupId>
<artifactId>struts</artifactId>
<version>1.2.9</version>
</dependency>

Incluimos la librería de COMMONS-COLLECTIONS, a través de maven

<dependency>
<groupId>apache-collections</groupId>
<artifactId>commons-collections</artifactId>
<version>3.1</version>
</dependency>


QUITAMOS LAS DEPENDENCIAS:

<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>

<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.1</version>
<scope>provided</scope>
</dependency>


Y EN EL MISMO PROYECTO (tiendaWebProfe)
-->Boton Derecho-->Build Path-->Add Library-->Server Runtime-->Tomcat v6.0


Definimos en el archivo descriptor de nuestra aplicacion web WEB.XML un servlet que redirija todas las peticiones del directorio /struts1/* al servlet

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


creamos el archivo de configuración de struts: struts-config.xml en el directorio WEB-INF

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN"
"http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd">
<struts-config>


</struts-config>



Creamos un Action (en lenguaje struts un Controlador es un Action (controla acciones/urls))

Hay que apreciar que en struts1 para crear un Action/Controlador hay que extender la clase org.apache.struts.action.Action y sobreescribir el metodo public ActionForward execute(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response) throws Exception {
Las acciones/controladores no devuelven una vista sino un resultado de la accion que se interpreta


package es.cea.struts1;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

/**
* Accion de struts
*
* @author juanantonioruz
*
*/
public class HelloWorldAction extends Action {
Log logger = LogFactory.getLog(getClass());

public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
//incluimos un modelo
request.setAttribute("curso", "CEA: JAVA");
//en vez de enviar a una vista devolvemos un resultado de la accion
return mapping.findForward("ok");
}

}

A continuación damos de alta el Action/Controlador en struts, es decir lo damos de alta en struts-config.xml

Se indica la clase action/controlador y la url que escucha (teniendo en cuenta que estamos en el directorio /struts1/*)
Además se indica en función del resultado la vista a la que se dirige

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN"
"http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd">
<struts-config>

<action-mappings>
<action path="/helloStruts" type="es.cea.struts1.HelloWorldAction">
<forward name="ok" path="/helloWorldStruts.jsp">
</forward>
</action>
</action-mappings>

</struts-config>


Creamos la vista helloWorldStruts.jsp para la renderización del resultado



<%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c" %>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>


<h1>Hola Struts!</h1>
<h2>${requestScope.curso}</h2>
</body>
</html>

No hay comentarios:

Publicar un comentario