Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Tutorial Struts Eclipse Espanol
Tutorial Struts Eclipse Espanol
Pgina 1 de 36
Tutorials for Hibernate, EJB 2, EJB 3 Struts, JavaServerfaces (JSF) Tomcat, JBoss, Myeclipse, Eclipse and other
Tutoriales (espaol) Primeros pasos usando struts y eclipse Sprache / Language
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 aplicain para biblioteca usando plugins libres como la consola Struts y JBOSS IDE.
Informacin General
Autor : Sebastian Hennebrder Sascha Wolski http://www.laliluna.de/tutorials.html Tutoriales para Struts, EJB, eclipse y xdoclet. Traduccin: Sebastian Arechederreta Dato : Enero, 20 th 2005 Herramientas De Desarrollo Eclipse 3.x Consola struts
http://www.laliluna.de/tutorial-struts-eclipse-espanol.html
13-06-2007
Pgina 2 de 36
JBOSS IDE (al usar JBOSS) Sysdeo plugin (al usar Tomcat) Cdigo fuente: http://www.laliluna.de/assets/tutorials/first_steps_with_struts.zip
Uso del cdigo fuente. El cdigo fuente no incluye ninguna de las bibliotecas solo los fuentes. Cree un proyecto web, agregue las bibliotecas manualmente segn lo explicado en este tutorial. Luego extraiga los cdigos fuentes, que proporcionamos, a su proyecto. La versin pdf de este tutorial (en ingls). http://www.laliluna.de/assets/tutorials/first_steps_with_struts_es.pdf
Tabla de contenido Primeros pasos usando struts y eclipse 1 Informacin general 1 Requisitos 1 Instalacin de la consola struts 2 Crear un proyecto web 2 Agregando soporte struts 2
http://www.laliluna.de/tutorial-struts-eclipse-espanol.html
13-06-2007
Pgina 3 de 36
Crear una pgina 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 aplicacin 22
Requisitos
Requerimientos para la instalacin de JBOSS IDE, cuando est utilizando JBOSS como servidor de aplicacin. Una tutorial de cmo 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.
http://www.laliluna.de/tutorial-struts-eclipse-espanol.html
13-06-2007
Pgina 4 de 36
Descomprima el archivo y copie el directorio com.jamesholmes.console.struts a la carpeta de plugins de eclipse Inicie eclipse y eso es todo.
http://www.laliluna.de/tutorial-struts-eclipse-espanol.html
13-06-2007
Pgina 5 de 36
Usted encontrar los archivos JAR en Project > WebRoot > WEB-INF > lib . Utilice SHIFT para
http://www.laliluna.de/tutorial-struts-eclipse-espanol.html
13-06-2007
Pgina 6 de 36
http://www.laliluna.de/tutorial-struts-eclipse-espanol.html
13-06-2007
Pgina 7 de 36
http://www.laliluna.de/tutorial-struts-eclipse-espanol.html
13-06-2007
Pgina 8 de 36
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 lengeta de la lgica 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 redireccin (forward) en el archivo de configuracin. Cuando no se puede encontrar esta redireccin occure una excepcin. Explicamos la action forward en el captulo siguiente.
<%@ 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 pgina"> </head> <body> Bienvenido! <br> <html:link action="bookList">Mostrar lista de libros</html:link> </body>
http://www.laliluna.de/tutorial-struts-eclipse-espanol.html
13-06-2007
Pgina 9 de 36
</html:html>
Qu es un mapa de accin (action mapping)? El mapa de accin es el corazn de struts. Maneja todas las acciones entre la aplicacin y el usuario. Usted puede definir qu accin ser ejecutada creando un mapa de accin (Action Mapping). El diagrama le muestra, cmo el servidor de aplicacin maneja la peticin del index.jsp o una accin no mapeada.
http://www.laliluna.de/tutorial-struts-eclipse-espanol.html
13-06-2007
Pgina 10 de 36
En el primer paso creamos una nueva accin mapeada. Abra el archivo struts-config.xml de la configuracin de struts, que est situado en WebRoot/WEB-INF. Se abre la consola de struts. (si no, botn derecho sobre struts-config.xml y seleccine "open with".
Marque Action Mapping y y seleccione Add. Escriba /default como Path y seleccione el tipo de accin Forward. Usaremos como pgina de bienvenida /jsp/default.jsp
En el paso siguiente crearemos la accin global forward. Marque "Global Forwards", seleccione "add". Elija /default.do como Path, que es la accin que especificamos antes.
http://www.laliluna.de/tutorial-struts-eclipse-espanol.html
13-06-2007
Pgina 11 de 36
http://www.laliluna.de/tutorial-struts-eclipse-espanol.html
13-06-2007
Pgina 12 de 36
La clase Libro representa un libro con las propiedades: id, autor, ttulo y disponibilidad.(id, author, title y available) Cree cuatro variables.
Cree un getter y un setter para cada una de las variables. Botn derecho en su clase, Source > Generate Getters and Setters
http://www.laliluna.de/tutorial-struts-eclipse-espanol.html
13-06-2007
Pgina 13 de 36
http://www.laliluna.de/tutorial-struts-eclipse-espanol.html
13-06-2007
Pgina 14 de 36
Agregue dos constructores a la clase para fijar las propiedades en la inicializacin de la clase.
// Contructor public 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; }
http://www.laliluna.de/tutorial-struts-eclipse-espanol.html
13-06-2007
Pgina 15 de 36
Abra struts-config.xml y agregue un nuevo form bean con la consola de struts. El tipo es nuestra ltima clase creada.
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
http://www.laliluna.de/tutorial-struts-eclipse-espanol.html
13-06-2007
Pgina 16 de 36
* 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(); } }
En nuestra clase hemos definido cada vez una coleccin de libros y los mtodos de acceso (getters y setters).El mtodo reset es llamado por struts cada vez que un formulario es inicializado. Cuando su estructura es requerida, ste es en cada peticin.
http://www.laliluna.de/tutorial-struts-eclipse-espanol.html
13-06-2007
Pgina 17 de 36
/* 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 simulacin de la base de datos. Copie el archivo SimulateDB.java del cdigo fuente que proporcionamos como una descarga arriba del paquete de.laliluna.tutorial.library.
http://www.laliluna.de/tutorial-struts-eclipse-espanol.html
13-06-2007
Pgina 18 de 36
Marque en Action Mapping en la consola Struts para acceder a la configuracin avanzada. News
http://www.laliluna.de/tutorial-struts-eclipse-espanol.html
13-06-2007
Pgina 19 de 36
Navigation
Search
Homepage Blog Tutorial and EBook Shop Hibernate 3 book released References Tutorials Tutoriales (espaol) Java trainings Bugs and Exceptions Links/Tips Feedback Disclaimer
Cree un Forward pata la Action Mapping del JSP con el nombre showList
Java security in web application (Mar. 05, 2007) New log4j tutorial (Feb. 23, 2007) Hibernate annotation - book update (Nov. 20, 2006) New Website online (Aug. 29, 2006) Update of Hibernate eBook (Aug. 22, 2006) New EJB 3 Struts tutorial (Mar. 17, 2006) EJB 3 and Ant (Mar. 17, 2006) First EJB 3 Tutorial
http://www.laliluna.de/tutorial-struts-eclipse-espanol.html
13-06-2007
Pgina 20 de 36
http://www.laliluna.de/tutorial-struts-eclipse-espanol.html
13-06-2007
Pgina 21 de 36
<%-- 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>
La marca <logic:iterate> recorre la coleccin de libros del form bean bookListForm Con la marca <logic:iterate> se tiene acceso a las propiedades de un libro. La marca <bean:write> muestra la propiedad (author, title) de la posicin actual. <html:checkbox> crea una casilla de verificacin.
Esto es produccin 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. Fcil, no?. Si quiere puede hacer una prueba de la aplicacin ahora. Mire al final del tutorial como probarla.
http://www.laliluna.de/tutorial-struts-eclipse-espanol.html
13-06-2007
Pgina 22 de 36
Genere los getters y setters. Luego herede todos los mtodos de la clase Book.
http://www.laliluna.de/tutorial-struts-eclipse-espanol.html
13-06-2007
Pgina 23 de 36
http://www.laliluna.de/tutorial-struts-eclipse-espanol.html
13-06-2007
Pgina 24 de 36
} 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); } public void setId(long id) { book.setId(id); } public void setTitle(String title) { book.setTitle(title); } public String toString() { return book.toString(); } }
http://www.laliluna.de/tutorial-struts-eclipse-espanol.html
13-06-2007
Pgina 25 de 36
Un DispatchAction no ejecuta mtodos pero puede tener diferentes mtodos dependiendo del parmetro. Con el parmetro podemos decidir si el mtodo llamado es crear/editar/borrar.
http://www.laliluna.de/tutorial-struts-eclipse-espanol.html
13-06-2007
Pgina 26 de 36
El mtodo editBook obtiene el parmetro id de la solicitud y lee el libro segn el id desde la base de datos simulada. El forward showEdit se refiere a la pgina bookEdit.jsp
/** * Method deleteBook
http://www.laliluna.de/tutorial-struts-eclipse-espanol.html
13-06-2007
Pgina 27 de 36
* @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 */ long id = Long.parseLong(request.getParameter("id")); /* lalinuna.de 04.11.2004 * inicia la clase SimulateDB y borra un libro segn el id */ SimulateDB simulateDB = new SimulateDB(); simulateDB.deleteBookById(id, request.getSession()); return mapping.findForward("showList"); }
El mtodo 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 pgina bookList.jsp
/** * Method addBook * @param mapping * @param form * @param request * @param response * @return ActionForward */ public ActionForward addBook( ActionMapping mapping, ActionForm form,
http://www.laliluna.de/tutorial-struts-eclipse-espanol.html
13-06-2007
Pgina 28 de 36
HttpServletRequest request, HttpServletResponse response) { BookEditForm bookEditForm = (BookEditForm) form; return mapping.findForward("showAdd"); }
El ltimo mtodo obtiene el libro del form bean bookEditForm y lo guarda en la base de datos simulada. Luego la aplicacin muestra la lista de libros.
Configuracin Struts
Cree un nuevo form bean con la consola struts.
http://www.laliluna.de/tutorial-struts-eclipse-espanol.html
13-06-2007
Pgina 29 de 36
Cree un nuevo action mapping. Como parmetro especifique do. Este parmetro es necesario para el DispatchAction.
Cambie el Action.
http://www.laliluna.de/tutorial-struts-eclipse-espanol.html
13-06-2007
Pgina 30 de 36
Cree tres forwards en la lengeta ?forward tab?. Uno para el JSP que edita, otro para el JSP que agrega y otro para el que muestra la lista de libros.
Cree un JSP llamado bookAdd.jsp en la carpeta /WebRoot/jsp. El forward showAdd apuntar a esta pgina.
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>
http://www.laliluna.de/tutorial-struts-eclipse-espanol.html
13-06-2007
Pgina 31 de 36
<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>Ttulo:</td> <td><html:text property="title" /></td> </tr> <tr> <td>Disponible:</td> <td><html:checkbox property="available" /></td> </tr> <tr> <td colspan="2"> <html:submit>Guardar</html:submit> </td> </tr> </table> <%-- fijar el parmetro 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 parmetro 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 mtodo ser llamado. Abra el archivo bookEdit.jsp. Puede usar el cdigo del archivo bookAdd.jsp y cambiar las siguientes lneas.
<title>Editar un libro</title>
http://www.laliluna.de/tutorial-struts-eclipse-espanol.html
13-06-2007
Pgina 32 de 36
<%@ 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> </td> <td> </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>
http://www.laliluna.de/tutorial-struts-eclipse-espanol.html
13-06-2007
Pgina 33 de 36
</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>
Prueba de la aplicacin
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:
http://www.laliluna.de/tutorial-struts-eclipse-espanol.html
13-06-2007
Pgina 34 de 36
http://localhost:8080/LibraryWeb/
http://www.laliluna.de/tutorial-struts-eclipse-espanol.html
13-06-2007
Pgina 35 de 36
http://www.laliluna.de/tutorial-struts-eclipse-espanol.html
13-06-2007
Pgina 36 de 36
http://www.laliluna.de/tutorial-struts-eclipse-espanol.html
13-06-2007