Vous êtes sur la page 1sur 8

Struts 2 Eclipse (Hola Mundo) STRUTS 2 es un framework que implementa el patrn de diseo MVC (modelo, vista, controlador) en aplicaciones

es Web.

Arquitectura funcional bsica del patrn MVC.

El controlador (Controller FilterDispatcher) es el primer componente en actuar en el procesamiento. Controla el flujo de la aplicacin y su funcin es vincular las peticiones http entrantes (instrucciones que el usuario enva a la aplicacin) a acciones. El objeto FilterDispatcher es un filtro de servlet que inspecciona todas las peticiones entrantes para decidir qu accin de Struts 2 debe encargarse de gestionar la peticin. Modelo-Accin: El modelo (Model) acta como una caja negra donde los datos y la lgica de negocio se fusionan en un estado monoltico de la aplicacin. Todo los dems no es sino la interfaz de usuario y las conexiones. Vista-Resultado: Componente de presentacin del patrn MVC. Cuando se ejecuta la lgica de negocio de la accin, se ofrece una vista al usuario que realiz la peticin. El resultado devuelve la pgina (pginas JSP o cualquier otra tecnologa de capa de presentacin) al navegador Web. El flujo del reenvo del patrn MVC se define mediante el fichero de configuracin struts.xml. En este fichero se establecen las vistas resultado de las acciones en funcin del resultado de la misma.

Nota: La accin es responsable de elegir qu resultado deber mostrar la respuesta. Las elecciones ms frecuentes se dan entre resultados que representan los resultados semnticos del procesamiento de la accin, como por ejemplo xito o error. La arquitectura MVC funciona en Struts 2 bsicamente de la siguiente manera: a travs de un navegador se genera una solicitud. sta es capturada por la capa Controller (implementada por el componente FilterDispathcher representado por un nico filtro especializado). Este filtro analizar la solicitud y verificar si el componente invocado se encuentra registrado en el archivo de configuracin XML de Struts 2. ste tiene por defecto el nombre struts.xml. El componente invocado, normalmente un Action de Struts 2, instanciar y/o utilizar diversos objetos de negocio para concretar la tarea solicitada. Segn el resultado que retorne el componente Action, la capa Controller derivar la respuesta generada a un objeto Result (normalmente una pgina JSP).

El Modelo o desarrollar.

lgica

de

negocio

es

la

parte

que

nos

corresponde

Utilizando Struts nunca se llega a una pagina de la capa de presentacin directamente. Esto es, en la url nunca se llega a una pagina jsp o html a traves de su nombre. De eso se trata el MVC, la presentacin esta separada en otra capa. En este entorno, se debe invocar una accin o aplicacin que debe estar mapeada en Struts: una accin se corresponder con una clase Java (heredera de la clase Action de Struts).

En esta prctica vamos a crear nuestra primera aplicacin web con Struts 2. Partimos de que ya tenemos instalado y configurado el SDK, Eclipse y Apache Tomcat. Descargamos las libreras de Struts 2, http://struts.apache.org/download, en mi caso Full Distribution: struts-2.3.8-all.zip. Descomprimimos el archivo zip y en el directorio lib se encuentran los JAR que utilizaremos en nuestras aplicaciones con struts. En Eclipse creamos un Dynamic Web Project e inclumos los archivos JAR requeridos por Struts 2 framework en la carpeta WEB-INF/lib del proyecto. Para el ejemplo ser suficiente con copiar y pegar en WEB-INF/lib los JARs que se muestran en la imagen y refrescar el proyecto en Eclipse (botn derecho sobre el proyecto -> Refresh).

A continuacin configuramos el struts 2 filter en el fichero web.xml alojado en la carpeta WEB-INF del proyecto. web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/webapp_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> <display-name>prj_struts2_HolaMundo</display-name> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <filter> <filter-name>struts2</filter-name> <filterclass>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> </web-app> Comentario [J1]: Archivo de configuracin central de la aplicacin web, formalmente conocido con el nombre de descriptor de despliegue. Contiene definiciones de todos los servlets, filtros de servlet y otros componentes de la API Servlet contenidos en la aplicacin web.

Comentario [J2]: Registro del filtro controlador del framework Struts 2. Este componente atrapar todas las solicitudes (request) generadas desde un cliente, dado que tiene como alias /*. Comentario [J3]: En el caso de una aplicacin Struts 2, los elementos ms importantes en el descriptor de despliegue son los elementos filter y filter-mapping que configuran el FilterDispatcher de Struts 2. Observamos que el patrn URL hacia el cual se mapea este filtro es /* lo que implica que el filtro inspeccionar todas las peticiones.

Ahora bajo Java Resources -> src creamos la clase MessageStore.java dentro del paquete org.apache.struts.helloworld.model (que creamos previamente).

MessageStore.java
package org.apache.struts.helloworld.model; /** * Model class that stores a message. * @author Bruce Phillips * */ public class MessageStore { private String message; public MessageStore() { setMessage("Hello Struts User"); } public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } }

Bajo Java Resources -> src creamos la clase HelloWorldAction.java dentro del paquete org.apache.struts.helloworld.action (que creamos previamente).

HelloWorldAction.java
package org.apache.struts.helloworld.action; import org.apache.struts.helloworld.model.MessageStore; import com.opensymphony.xwork2.ActionSupport; /** * Acts as a Struts 2 controller that responds * to a user action by setting the value * of the Message model class, and returns a String * result. * @author Bruce Phillips * */ public class HelloWorldAction extends ActionSupport { private static final long serialVersionUID = 1L; /** * The model class that stores the message * to display in the view. */ private MessageStore messageStore; /* * Creates the MessageStore model object and * returns success. The MessageStore model * object will be available to the view. * (non-Javadoc) * @see com.opensymphony.xwork2.ActionSupport#execute() */ public String execute() throws Exception { messageStore = new MessageStore() ; return SUCCESS; } public MessageStore getMessageStore() { return messageStore; } public void setMessageStore(MessageStore messageStore) { this.messageStore = messageStore; } }

Ahora creamos la presentation page en JSP. Creamos un nuevo archivo JSP HelloWorld.jsp dentro de la carpeta WebContent del proyecto.

HelloWorld.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@ taglib prefix="s" uri="/struts-tags" %> <!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=ISO-8859-1"> <title>Hello World!</title> </head> <body> <h2><s:property value="messageStore.message" /></h2> </body> </html>

Ahora creamos un nuevo archivo JSP index.jsp dentro de la carpeta WebContent del proyecto.

index.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@ taglib prefix="s" uri="/struts-tags" %> <!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=ISO-8859-1"> <title>Basic Struts 2 Application - Welcome</title> </head> <body> <h1>Welcome To Struts 2!</h1> <p><a href="<s:url action='hello'/>">Hello World</a></p> </body> </html>

Comentario [J4]: La directiva taglib permite utilizar el set de etiquetas de Struts que el framework ofrece.

Finalmente creamos al archivo struts.xml dentro de Jaava Resources -> src.

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> <constant name="struts.devMode" value="true" /> <package name="basicstruts2" extends="struts-default"> <!-- If no class attribute is specified the framework will assume success and render the result index.jsp --> <!-- If no name value for the result node is specified the success value is the default --> <action name="index"> <result>/index.jsp</result> </action> <!-- If the URL is hello.action the call the execute method of class HelloWorldAction. If the result returned by the execute method is success render the HelloWorld.jsp --> <action name="hello" class="org.apache.struts.helloworld.action.HelloWorldAction" method="execute"> <result name="success">/HelloWorld.jsp</result> </action> </package> </struts>

Comentario [J5]: El punto de entrada en la arquitectura declarativa del XML es el archivo struts.xml.

Comentario [J6]: Elemento raz obligatorio de todos los archivos XML de Struts 2. Comentario [J7]: El elemento constant name usa constantes para modificar las propiedades de Struts y puede usurase para configurar las propiedades del marco de trabajo. En este caso se ha configurado el marco de trabajo para que se ejecute en modo de desarrollo. Comentario [J8]: El elemento package es un importante elemento contenedor que sirve para organizar las acciones, resultados y otros elementos componentes. Comentario [J9]: Esta aplicacin tiene dos acciones action. Tanto la accin index como la accin hello declaran algunos resultados result (cada resultado nombra una pgina JSP que utilizar para mostrar la pgina de resultados.

Resultado de la ejecucin

Y al pinchar en link Hello World

Vous aimerez peut-être aussi