Primeros Pasos Usando Struts y Eclipse Tutorial

36
Primeros pasos usando struts y eclipse tutorial Esta tutorial explicará los primeros pasos usando los struts de Apache como framework para internet y eclipse como ambiente de desarrollo. Crearemos un ejemplo simple de una aplicaión para biblioteca usando plugins libres como la consola Struts y JBOSS IDE. Información General Autor : Sebastian Hennebrüder Sascha Wolski http://www.laliluna.de/tutorials.html Tutoriales para Struts, EJB, eclipse y xdoclet. Traducción: Sebastian Arechederreta Dato : Enero, 20 th 2005 Herramientas De Desarrollo Eclipse 3.x Consola struts JBOSS IDE (al usar JBOSS) Sysdeo plugin (al usar Tomcat) Código fuente: http://www.laliluna.de/assets/tutorials/first_steps_with_struts.zip Uso del código fuente. El código fuente no incluye ninguna de las bibliotecas solo los fuentes. Cree un proyecto web, agregue las bibliotecas manualmente según lo explicado en este tutorial. Luego extraiga los códigos fuentes, que proporcionamos, a su proyecto. La versión pdf de este tutorial (en inglés). http://www.laliluna.de/assets/tutorials/first_steps_with_struts_es.pdf

Transcript of Primeros Pasos Usando Struts y Eclipse Tutorial

Page 1: Primeros Pasos Usando Struts y Eclipse Tutorial

Primeros pasos usando struts y eclipse tutorial 

Esta tutorial explicará los primeros pasos usando los struts de Apache como framework para internet y eclipse como ambiente de desarrollo. Crearemos un ejemplo simple de una aplicaión para biblioteca usando plugins libres como la consola Struts y JBOSS IDE.

Información General

Autor :

Sebastian Hennebrüder

Sascha Wolski

http://www.laliluna.de/tutorials.html   Tutoriales para Struts, EJB, eclipse y xdoclet.

Traducción:

Sebastian Arechederreta

Dato :

Enero, 20 th 2005Herramientas De Desarrollo

Eclipse 3.x

Consola struts

JBOSS IDE (al usar JBOSS)

Sysdeo plugin (al usar Tomcat)

Código fuente:

http://www.laliluna.de/assets/tutorials/first_steps_with_struts.zip

Uso del código fuente.

El código fuente no incluye ninguna de las bibliotecas solo los fuentes. Cree un proyecto web, agregue las bibliotecas manualmente según lo explicado en este tutorial. Luego extraiga los códigos fuentes, que proporcionamos, a su proyecto.

La versión pdf de este tutorial (en inglés).

http://www.laliluna.de/assets/tutorials/first_steps_with_struts_es.pdf

Tabla de contenido

Primeros pasos usando struts y eclipse 1

Información general 1

Page 2: Primeros Pasos Usando Struts y Eclipse Tutorial

Requisitos 1

Instalación de la consola struts 2

Crear un proyecto web 2

Agregando soporte struts 2

Crear una página de bienvenida por defecto 4

Global Action Forwards y Action Mapping 5

Caso de uso: lista de libros 6

Caso de uso: Agregar, editar y borrar datos 15

Cambios a la lista de libros JSP 21

Prueba de la aplicación 22

Requisitos

Requerimientos para la instalación de JBOSS IDE, cuando está utilizando JBOSS como servidor de aplicación. Una tutorial de cómo crear y distribuir proyectos web con la JBOSS IDE se puede encontrar aquí.

http://www.laliluna.de/webprojects-eclipse-jbosside-tutorial-en.html

Cuando se utiliza Tomcat, se puede utilizar el plugin de eclipse

http://www.sysdeo.com/eclipse/tomcatPlugin.html

como alternativa.

Instalación de la consola struts

Descargue los fuentes del website

http://www.jamesholmes.com/struts/console/

Descomprima el archivo y copie el directorio

com.jamesholmes.console.struts

a la carpeta de plugins de eclipse

Inicie eclipse y eso es todo.

Cree un proyecto web

La creación de un proyecto web con la IDE JBOSS se explica en este tutorial

http://www.laliluna.de/webprojects-eclipse-jbosside-tutorial-en.html

Page 3: Primeros Pasos Usando Struts y Eclipse Tutorial

el cuál fue mencionado en los requisitos. Desarrolle un proyecto web como se explica allí.

Agregando soporte struts

Por ahora el proyecto es un proyecto normal de JEE, así que necesitamos agregar las capacidades de los struts (bibliotecas, archivos xml...). La manera más fácil es copiar un poryecto struts en blanco en su proyecto.

Usted puede descargar un proyecto en blanco aquí.

http://www.laliluna.de/assets/tutorials/struts-blanc-project-1.2.zip

Descomprima el contenido del proyecto struts en blanco en el espacio de trabajo de eclipse donde esta su proyecto.

Actualice el proyecto en el explorador del paquete presionando el botón derecho del ratón - > el comando "refresh" (Actualizar).

Su proyecto ahora se parece el siguiente.

Agregando las bibliotecas de struts

Ahora usted debe agregar las bibliotecas a su classpath. Botón derecho sobre el proyecto y seleccione "properties" en el menú de contexto.

Page 4: Primeros Pasos Usando Struts y Eclipse Tutorial

Seleccione "Java Build Path" y "Add jars" en la lengüeta de las bibliotecas.

 

Page 5: Primeros Pasos Usando Struts y Eclipse Tutorial

Usted encontrará los archivos JAR en Project > WebRoot > WEB-INF > lib . Utilice SHIFT para seleccionar múltiples archivos jar.

Page 6: Primeros Pasos Usando Struts y Eclipse Tutorial

Las bibliotecas de struts ahora aparecerán en el explorador de paquete.

Cree una página de bienvenida por defecto

Bien, ahora deseamos crear una página por defecto. Botón derecho (sí otra vez) en la carpeta WebRoot en el proyecto y elija ?New? > JSP. Si usted no puede encontrar esta opción, seleccione "other" y entonces JSP.

¡Usted debe tener instalado el JBOSS IDE!

Page 7: Primeros Pasos Usando Struts y Eclipse Tutorial

Cree un JSP nuevo en el directorio WebRoot.

Usted encontrará el archivo index.jsp en la carpeta WebRoot del proyecto. Debemos agregar las bibliotecas de etiqueta de struts a nuestro JSP. Necesitamos bibliotecas de etiqueta (Tag Libraries)para utilizar etiquetas de struts en un JSP. En este caso necesitamos solamente la biblioteca de la lengüeta de la lógica de struts. Cambie su contenido de JSP al siguiente.

<% @page contentType="text/html" %> <% @page language="Java" %> <% @taglib uri="http://jakarta.apache.org/struts/tags-logic" prefix="logic" %>

<logic:forward name="welcome"/>

La etiqueta logic:forward hace que Struts busque una redirección (forward) en el archivo de configuración. Cuando no se puede encontrar esta redirección occure una excepción. Explicamos la action forward en el capítulo siguiente.

Cree un segundo JSP index.jsp en el directorio/WebRoot/jsp.Cambie el JSP a lo siguiente:

Page 8: Primeros Pasos Usando Struts y Eclipse Tutorial

<%@ page language="java"%><%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html:html locale="true"> <head> <html:base /> <title>index.jsp</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="Esta es mi página"> </head> <body> Bienvenido! <br> <html:link action="bookList">Mostrar lista de libros</html:link> </body></html:html>

Global Action Forwards y Action Mappings

¿Qué es una acción de redirección (action forward)?Una acción de redirección se puede utilizar para redireccionar a un jsp o a un mapa de acción (action mapping). Hay dos acciones de redirección diferentes. La redirección de acción global y la de acción local. Usted puede tener acceso a una redirección de acción global en cada jsp o en la clase Action. Una redirección de acción local solamente puede ser accedida por la clase asignada.

¿Qué es un mapa de acción (action mapping)? El mapa de acción es el corazón de struts. Maneja todas las acciones entre la aplicación y el usuario. Usted puede definir qué acción será ejecutada creando un mapa de acción (Action Mapping).

El diagrama le muestra, cómo el servidor de aplicación maneja la petición del index.jsp o una acción no mapeada.

Page 9: Primeros Pasos Usando Struts y Eclipse Tutorial

En el primer paso creamos una nueva acción mapeada. Abra el archivo struts-config.xml de la configuración de struts, que está situado en WebRoot/WEB-INF. Se abre la consola de struts. (si no, botón derecho sobre struts-config.xml y seleccióne "open with".

Marque Action Mapping y y seleccione Add.

Escriba /default como Path y seleccione el tipo de acción Forward. Usaremos como página de bienvenida /jsp/default.js

p

En el paso siguiente crearemos la acción global forward. Marque "Global Forwards", seleccione "add".

Elija /default.do como Path, que es la acción que especificamos antes.

Caso de uso: Listar los libros

Page 10: Primeros Pasos Usando Struts y Eclipse Tutorial

Una acción de struts siempre hace una cierta lógica del negocio y guarda el resultado en una clase del tipo ActionForm. Los datos del ActionForm se pueden mostrar en un JSP.

Nuestra Action leerá datos de una base de datos, guardandolos en ActionForm. El JSP exhibirá nuestros datos.

Crear una clase "Libro" (?Book?)

Cree una clase nueva ?Libro? en el paquete de.laliluna.tutorial.library.

Page 11: Primeros Pasos Usando Struts y Eclipse Tutorial

La clase Libro representa un libro con las propiedades: id, autor, título y disponibilidad.(id, author, title y available)Cree cuatro variables.

Cree un getter y un setter para cada una de las variables. Botón derecho en su clase, Source > Generate Getters and Setters

Elija seleccionar todo (Select All) y Last Method en Insertion Point

Page 12: Primeros Pasos Usando Struts y Eclipse Tutorial
Page 13: Primeros Pasos Usando Struts y Eclipse Tutorial

Agregue dos constructores a la clase para fijar las propiedades en la inicialización de la clase.

Page 14: Primeros Pasos Usando Struts y Eclipse Tutorial

// Contructorpublic Book(){ } // Contructor para propiedades iniciales public Book(long id, String author, String title, boolean available) {this.id = id;this.author = author;this.title = title;this.available = available;}

¡Eso es todo para nuestra clase libro!

Crear un form bean, action form y jsp

Cree una nueva sub clase de ActionForm. El ActionForm contendrá nuestros libros para exhibirlos en el

JSP.

 

Page 15: Primeros Pasos Usando Struts y Eclipse Tutorial

Abra struts-config.xml y agregue un nuevo form bean con la consola de struts. El tipo es nuestra última clase creada.

Cambie el código fuente de la clase action form.

Abra el archivo BookListForm.java y cambie el código fuente:

public class BookListForm extends ActionForm { private Collection books; /* lalinuna.de 02.11.2004 * obtiene la collection de libros */ public Collection getBooks() { return books; } /* lalinuna.de 02.11.2004 * establece la collection de libros */ public void setBooks(Collection books) { this.books = books; } /* lalinuna.de 02.11.2004 * limpia la collection de libros */ public void reset(ActionMapping arg0, HttpServletRequest arg1) { books = new ArrayList(); }}

Page 16: Primeros Pasos Usando Struts y Eclipse Tutorial

En nuestra clase hemos definido cada vez una colección de libros y los métodos de acceso (getters y setters).El método reset es llamado por struts cada vez que un formulario es inicializado. Cuando su estructura es requerida, éste es en cada petición.

Crear un Action Mapping y una Action Class.

Cree una clase BookListAction. Esta clase carga los libros de la base de datos y los guarda en BookListForm.

Page 17: Primeros Pasos Usando Struts y Eclipse Tutorial
Page 18: Primeros Pasos Usando Struts y Eclipse Tutorial

Cambie el código fuente de la clase Action.

Abra la clase bookListAction e implemente el método execute desde la super clase ActionForm.La llamada siguiente mapping.findForward("showList") busca un forward con el nombre "showList" en la declaración del Action Mapping el declaración y se redirecciona.

/** * Method execute * @param mapping * @param form * @param request * @param response * @return ActionForward */ public ActionForward execute( ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { BookListForm bookListForm = (BookListForm) form; /* lalinuna.de 03.11.2004 * inicia la clase SimulateDB y pone algunos datos */ SimulateDB simulateDB = new SimulateDB(); bookListForm.setBooks(simulateDB.getAllBooks(request.getSession())); return mapping.findForward("showList"); }

Clase SimulateDB

No utilizaremos una base de datos verdadera en este tutorial sino una simulación de la base de datos. Copie el archivo SimulateDB.java del código fuente que proporcionamos como una descarga arriba del paquete de.laliluna.tutorial.library.

Page 19: Primeros Pasos Usando Struts y Eclipse Tutorial

Configuración struts para la lista de libros

Cree una nueva Action Mapping con la consola de struts. La ruta debe comenzar con un /, el tipo es la acción que acabamos de crear.

Marque en Action Mapping en la consola Struts para acceder a la configuración avanzada.

Page 20: Primeros Pasos Usando Struts y Eclipse Tutorial

Cree un Forward pata la Action Mapping del JSP con el nombre showList

Page 21: Primeros Pasos Usando Struts y Eclipse Tutorial

Crear la lista de libros JSP

Cree un nuevo JSP en la carpeta /jsp/ , nombrelo bookList.jsp .

<%@ page language="java"%><%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean"%><%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html"%><%@ taglib uri="http://jakarta.apache.org/struts/tags-logic" prefix="logic"%><html><head><title>Show book list</title></head><body><table border="1"> <tbody> <%-- set the header --%> <tr> <td>Author</td> <td>Book name</td> <td>Available</td> <td>&nbsp;</td> <td>&nbsp;</td> </tr> <%-- check if book exists and display message or iterate over books --%> <logic:empty name="bookListForm" property="books"> <tr> <td colspan="5">No books available</td> </tr> </logic:empty> <logic:notEmpty name="bookListForm" property="books"> <logic:iterate name="bookListForm" property="books" id="book"> <tr> <%-- print out the book informations --%> <td><bean:write name="book" property="author" /></td> <td><bean:write name="book" property="title" /></td> <td><html:checkbox disabled="true" name="book" property="available" /> </td> <%-- print out the edit and delete link for each book --%> <td><html:link action="bookEdit.do?do=editBook" paramName="book" paramProperty="id" paramId="id">Edit</html:link></td> <td><html:link action="bookEdit.do?do=deleteBook" paramName="book" paramProperty="id" paramId="id">Delete</html:link></td> </tr> </logic:iterate> </logic:notEmpty>  <%-- end interate --%> </tbody></table></body></html>

Page 22: Primeros Pasos Usando Struts y Eclipse Tutorial

La marca <logic:iterate> recorre la colección de libros del form bean bookListFormCon la marca <logic:iterate> se tiene acceso a las propiedades de un libro. La marca <bean:write> muestra la propiedad (author, title) de la posición actual. <html:checkbox> crea una casilla de verificación.

Esto es producción fuuuhh, tenemos nuestro form Bean con una Action Form Class, nuestro Action Mapping con su Action Class y JSP, y los servicios necesarios activos.

Muy bien. Tenemos que crear un action class que gaurde los datos en un action form. Para mostrar la lista de libros hemos creado un JSP que utiliza los datos en action form. Fácil, no?.

Si quiere puede hacer una prueba de la aplicación ahora. Mire al final del tutorial como probarla.

Caso de uso: Agregar, editar y borrar datos

En la sección siguiente agregamos las funcionalidades de Agregar, Editar y Borrar datos. El proceso es el mismo:

Action ActionForm

Configuración Struts

Nuevo form bean

Cree una nueva clase como action form en el paquete de.laliluna.tutorial.library.form . Denominelo BookEditForm.

Agregue una nueva instancia de libro (Book).

Book book = new Book();

Genere los getters y setters. Luego herede todos los métodos de la clase Book.

Page 23: Primeros Pasos Usando Struts y Eclipse Tutorial

El código fuente debería ser como este:

public class BookEditForm extends ActionForm { Book book = new Book(); public Book getBook() { return book; } public void setBook(Book book) { this.book = book; } public boolean equals(Object arg0) { return book.equals(arg0); } public String getAuthor() { return book.getAuthor(); } public long getId() { return book.getId(); } public String getTitle() { return book.getTitle(); } public int hashCode() { return book.hashCode(); } public boolean isAvailable() { return book.isAvailable(); } public void setAuthor(String author) { book.setAuthor(author); } public void setAvailable(boolean available) { book.setAvailable(available);

Page 24: Primeros Pasos Usando Struts y Eclipse Tutorial

} public void setId(long id) { book.setId(id); } public void setTitle(String title) { book.setTitle(title); } public String toString() { return book.toString(); }}

Ahora podemos acceder a los atributos de libro en el action form.

Crear la action class

Cree una nueva clase. Esta vez la clase no es una sub clase de Action pero sí de org.apache.struts.DispatchAction.

Un DispatchAction no ejecuta métodos pero puede tener diferentes métodos dependiendo del parámetro. Con el parámetro podemos decidir si el método llamado es crear/editar/borrar.

Page 25: Primeros Pasos Usando Struts y Eclipse Tutorial

Código fuente de la clase DispatchAction

Abra el archivo bookEditAction.java. Agregue los métodos:

/** * Method editBook * @param mapping * @param form * @param request * @param response * @return ActionForward */public ActionForward editBook( ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { BookEditForm bookEditForm = (BookEditForm) form; /* lalinuna.de 04.11.2004 * obtiene el id del libro de la solicitud */ long id = Long.parseLong(request.getParameter("id")); /* lalinuna.de 04.11.2004 * inicia la clase SimulateDB y obtiene un libro por id */ SimulateDB simulateDB = new SimulateDB(); bookEditForm.setBook(simulateDB.loadBookById(id, request.getSession())); return mapping.findForward("showEdit"); }

El método editBook obtiene el parámetro id de la solicitud y lee el libro según el id desde la base de datos simulada. El forward showEdit se refiere a la página bookEdit.jsp

/** * Method deleteBook * @param mapping * @param form * @param request * @param response * @return ActionForward */public ActionForward deleteBook( ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { BookEditForm bookEditForm = (BookEditForm) form; /* lalinuna.de 04.11.2004 * obtiene el id del libro de la solicitud */

Page 26: Primeros Pasos Usando Struts y Eclipse Tutorial

long id = Long.parseLong(request.getParameter("id")); /* lalinuna.de 04.11.2004 * inicia la clase SimulateDB y borra un libro según el id */ SimulateDB simulateDB = new SimulateDB(); simulateDB.deleteBookById(id, request.getSession()); return mapping.findForward("showList"); }

El método deleteBook obtiene el id de la solicitud y elimina el libro de la base de datos simulada. El forward showList actualiza la lista de libros con la página bookList.jsp

/** * Method addBook * @param mapping * @param form * @param request * @param response * @return ActionForward */public ActionForward addBook( ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { BookEditForm bookEditForm = (BookEditForm) form; return mapping.findForward("showAdd"); }

El método addBook se refiere a la página bookAdd.jsp

/** * Method saveBook * @param mapping * @param form * @param request * @param response * @return ActionForward */public ActionForward saveBook( ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { BookEditForm bookEditForm = (BookEditForm) form; /* lalinuna.de 04.11.2004 * inicia la clase SimulateDB y obtiene los datos según id */ SimulateDB simulateDB = new SimulateDB(); simulateDB.saveToDB(bookEditForm.getBook(), request.getSession());

Page 27: Primeros Pasos Usando Struts y Eclipse Tutorial

return mapping.findForward("showList");}

El último método obtiene el libro del form bean bookEditForm y lo guarda en la base de datos simulada. Luego la aplicación muestra la lista de libros.

Configuración Struts

Cree un nuevo form bean con la consola struts.

Cree un nuevo action mapping. Como parámetro

especifique do. Este parámetro es necesario para el DispatchAction.

Cambie el Action.

Page 28: Primeros Pasos Usando Struts y Eclipse Tutorial

Cree tres forwards en la lengüeta ?forward tab?. Uno para el JSP que edita, otro para el JSP que agrega y otro para el que muestra la lista de libros.

El último forward no irá a ningun JSP pero sí a otra acción.

Cree un JSP llamado bookAdd.jsp

en la carpeta /WebRoot/jsp. El forward showAdd apuntará a esta página.

Cambie el código fuente del JSP

Abra el archivo bookAdd.jsp y agregue el siguiente código.

 

<%@ page language="java"%><%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean"%> <%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html"%><%@ taglib uri="http://jakarta.apache.org/struts/tags-logic" prefix="logic" %> <html> <head> <title>Agregar un libro</title> </head> <body> <%-- crear un formulario html --%> <html:form action="bookEdit"> <%-- Mostrar los datos del formulario --%> <table border="1"> <tr> <td>Autor:</td> <td><html:text property="author" /></td> </tr> <tr> <td>Título:</td> <td><html:text property="title" /></td> </tr> <tr>

Page 29: Primeros Pasos Usando Struts y Eclipse Tutorial

<td>Disponible:</td> <td><html:checkbox property="available" /></td> </tr> <tr> <td colspan="2"> <html:submit>Guardar</html:submit> </td> </tr> </table> <%-- fijar el parámetro para dispatch action --%> <html:hidden property="do" value="saveBook" /> </html:form> </body></html>

La etiqueta <html:form> crea un nuevo formulario HTML y se refiere con el parámetro action=?bookEdit? al action mapping. La etiqueta <html:text> crea un campo de texto con la propiedad autor del libro.<html:hidden> es un campo oculto con el nombre do. Necesitamos este campo oculto, porque le dice a la clase dispatch action que método será llamado.

Abra el archivo bookEdit.jsp. Puede usar el código del archivo bookAdd.jsp y cambiar las siguientes líneas.

<title>Editar un libro</title>

Agregue la siguiente línea <html:hidden property="do" value="saveBook" />

<%-- Campo oculto que contiene el id del libro --%><html:hidden property="id" />

Cambios a la lista de libros JSP

Abra el archivo bookList.jsp y cambie el código fuente:

 

<%@ page language="java"%><%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean"%><%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html"%><%@ taglib uri="http://jakarta.apache.org/struts/tags-logic" prefix="logic"%><html><head><title>Show book list</title></head><body>

Page 30: Primeros Pasos Usando Struts y Eclipse Tutorial

<table border="1"> <tbody> <%-- set the header --%> <tr> <td>Author</td> <td>Book name</td> <td>Available</td> <td>&nbsp;</td> <td>&nbsp;</td> </tr> <%-- check if book exists and display message or iterate over books --%> <logic:empty name="bookListForm" property="books"> <tr> <td colspan="5">No books available</td> </tr> </logic:empty> <logic:notEmpty name="bookListForm" property="books"> <logic:iterate name="bookListForm" property="books" id="book"> <tr> <%-- print out the book informations --%> <td><bean:write name="book" property="author" /></td> <td><bean:write name="book" property="title" /></td> <td><html:checkbox disabled="true" name="book" property="available" /> </td> <%-- print out the edit and delete link for each book --%> <td><html:link action="bookEdit.do?do=editBook" paramName="book" paramProperty="id" paramId="id">Edit</html:link></td> <td><html:link action="bookEdit.do?do=deleteBook" paramName="book" paramProperty="id" paramId="id">Delete</html:link></td> </tr> </logic:iterate> </logic:notEmpty>

 <%-- print out the add link --%> <tr> <td colspan="5"><html:link action="bookEdit.do?do=addBook">Add a new book</html:link> </td> </tr> <%-- end interate --%> </tbody></table></body></html>

Ahora, hemos finalizado toda la codificación y podemos probar la aplicación.

Prueba de la aplicación

Inicie jboss y convierta el proyecto a un archivo paquete. (Esto está explicado en el tutorial JBOSS IDE, mencionado anteriormente).

Llame al proyecto en su navegador favorito:

Page 31: Primeros Pasos Usando Struts y Eclipse Tutorial

http://localhost:8080/LibraryWeb/

Felicitaciones, estas muy cerca de ser un experto en struts. ;-)

Page 32: Primeros Pasos Usando Struts y Eclipse Tutorial