Documente Academic
Documente Profesional
Documente Cultură
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
Traducción:
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
Primeros pasos usando struts y eclipse tutorial Página 2 de 36
Código fuente:
http://www.laliluna.de/assets/tutorials/first_steps_with_struts.zip
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.
http://www.laliluna.de/assets/tutorials/first_steps_with_struts_es.pdf
Tabla de contenido
Información general 1
Requisitos 1
http://www.laliluna.de/tutorial-struts-eclipse-espanol.html 13-06-2007
Primeros pasos usando struts y eclipse tutorial Página 3 de 36
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
http://www.sysdeo.com/eclipse/tomcatPlugin.html
como alternativa.
http://www.jamesholmes.com/struts/console/
http://www.laliluna.de/tutorial-struts-eclipse-espanol.html 13-06-2007
Primeros pasos usando struts y eclipse tutorial Página 4 de 36
com.jamesholmes.console.struts
http://www.laliluna.de/webprojects-eclipse-jbosside-tutorial-en.html
el cuál fue mencionado en los requisitos. Desarrolle un proyecto web como se explica allí.
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).
http://www.laliluna.de/tutorial-struts-eclipse-espanol.html 13-06-2007
Primeros pasos usando struts y eclipse tutorial Página 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
Primeros pasos usando struts y eclipse tutorial Página 6 de 36
http://www.laliluna.de/tutorial-struts-eclipse-espanol.html 13-06-2007
Primeros pasos usando struts y eclipse tutorial Página 7 de 36
http://www.laliluna.de/tutorial-struts-eclipse-espanol.html 13-06-2007
Primeros pasos usando struts y eclipse tutorial Página 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 lengüeta de la lógica de struts. Cambie
su contenido de JSP al siguiente.
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.
http://www.laliluna.de/tutorial-struts-eclipse-espanol.html 13-06-2007
Primeros pasos usando struts y eclipse tutorial Página 9 de 36
</html:html>
El diagrama le muestra, cómo el servidor de aplicación maneja la petición del index.jsp o una acción no
mapeada.
http://www.laliluna.de/tutorial-struts-eclipse-espanol.html 13-06-2007
Primeros pasos usando struts y eclipse tutorial Página 10 de 36
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".
Escriba /default como Path y seleccione el tipo de acción Forward. Usaremos como página de
bienvenida /jsp/default.jsp
En el paso siguiente crearemos la acción global forward. Marque "Global Forwards", seleccione "add".
http://www.laliluna.de/tutorial-struts-eclipse-espanol.html 13-06-2007
Primeros pasos usando struts y eclipse tutorial Página 11 de 36
Nuestra Action leerá datos de una base de datos, guardandolos en ActionForm. El JSP exhibirá nuestros datos.
http://www.laliluna.de/tutorial-struts-eclipse-espanol.html 13-06-2007
Primeros pasos usando struts y eclipse tutorial Página 12 de 36
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
http://www.laliluna.de/tutorial-struts-eclipse-espanol.html 13-06-2007
Primeros pasos usando struts y eclipse tutorial Página 13 de 36
http://www.laliluna.de/tutorial-struts-eclipse-espanol.html 13-06-2007
Primeros pasos usando struts y eclipse tutorial Página 14 de 36
Agregue dos constructores a la clase para fijar las propiedades en la inicialización de la clase.
// Contructor
public Book(){ }
http://www.laliluna.de/tutorial-struts-eclipse-espanol.html 13-06-2007
Primeros pasos usando struts y eclipse tutorial Página 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.
/* 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
Primeros pasos usando struts y eclipse tutorial Página 16 de 36
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.
http://www.laliluna.de/tutorial-struts-eclipse-espanol.html 13-06-2007
Primeros pasos usando struts y eclipse tutorial Página 17 de 36
/**
* 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.
http://www.laliluna.de/tutorial-struts-eclipse-espanol.html 13-06-2007
Primeros pasos usando struts y eclipse tutorial Página 18 de 36
News
http://www.laliluna.de/tutorial-struts-eclipse-espanol.html 13-06-2007
Primeros pasos usando struts y eclipse tutorial Página 19 de 36
Java
security in
web
application
(Mar. 05,
2007)
New log4j
tutorial
(Feb. 23,
2007)
Navigation
Hibernate
annotation
Search - book
Homepage update
Blog (Nov. 20,
Tutorial and EBook 2006)
Shop New
Hibernate 3 book Website
released online
References (Aug. 29,
Tutorials 2006)
Tutoriales (español) Update of
Java trainings Hibernate
eBook
Bugs and Exceptions
(Aug. 22,
Links/Tips 2006)
Feedback Cree un Forward pata la Action Mapping del JSP con el nombre showList
New EJB 3
Disclaimer 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
Primeros pasos usando struts y eclipse tutorial Página 20 de 36
(Mar. 15,
2006)
http://www.laliluna.de/tutorial-struts-eclipse-espanol.html 13-06-2007
Primeros pasos usando struts y eclipse tutorial Página 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>
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.
Action
http://www.laliluna.de/tutorial-struts-eclipse-espanol.html 13-06-2007
Primeros pasos usando struts y eclipse tutorial Página 22 de 36
ActionForm
Configuración Struts
Genere los getters y setters. Luego herede todos los métodos de la clase Book.
http://www.laliluna.de/tutorial-struts-eclipse-espanol.html 13-06-2007
Primeros pasos usando struts y eclipse tutorial Página 23 de 36
http://www.laliluna.de/tutorial-struts-eclipse-espanol.html 13-06-2007
Primeros pasos usando struts y eclipse tutorial Página 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
Primeros pasos usando struts y eclipse tutorial Página 25 de 36
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.
http://www.laliluna.de/tutorial-struts-eclipse-espanol.html 13-06-2007
Primeros pasos usando struts y eclipse tutorial Página 26 de 36
/**
* 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
http://www.laliluna.de/tutorial-struts-eclipse-espanol.html 13-06-2007
Primeros pasos usando struts y eclipse tutorial Página 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 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,
http://www.laliluna.de/tutorial-struts-eclipse-espanol.html 13-06-2007
Primeros pasos usando struts y eclipse tutorial Página 28 de 36
HttpServletRequest request,
HttpServletResponse response) {
BookEditForm bookEditForm = (BookEditForm) form;
return mapping.findForward("showAdd");
/**
* 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());
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.
http://www.laliluna.de/tutorial-struts-eclipse-espanol.html 13-06-2007
Primeros pasos usando struts y eclipse tutorial Página 29 de 36
Cree un nuevo action mapping. Como parámetro especifique do. Este parámetro es necesario para el
DispatchAction.
Cambie el Action.
http://www.laliluna.de/tutorial-struts-eclipse-espanol.html 13-06-2007
Primeros pasos usando struts y eclipse tutorial Página 30 de 36
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.
Cree un JSP llamado bookAdd.jsp en la carpeta /WebRoot/jsp. El forward showAdd apuntará a esta página.
<html>
<head>
http://www.laliluna.de/tutorial-struts-eclipse-espanol.html 13-06-2007
Primeros pasos usando struts y eclipse tutorial Página 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>Título:</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 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>
http://www.laliluna.de/tutorial-struts-eclipse-espanol.html 13-06-2007
Primeros pasos usando struts y eclipse tutorial Página 32 de 36
http://www.laliluna.de/tutorial-struts-eclipse-espanol.html 13-06-2007
Primeros pasos usando struts y eclipse tutorial Página 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 aplicación
Inicie jboss y convierta el proyecto a un archivo paquete. (Esto está explicado en el tutorial JBOSS IDE,
mencionado anteriormente).
http://www.laliluna.de/tutorial-struts-eclipse-espanol.html 13-06-2007
Primeros pasos usando struts y eclipse tutorial Página 34 de 36
http://localhost:8080/LibraryWeb/
http://www.laliluna.de/tutorial-struts-eclipse-espanol.html 13-06-2007
Primeros pasos usando struts y eclipse tutorial Página 35 de 36
http://www.laliluna.de/tutorial-struts-eclipse-espanol.html 13-06-2007
Primeros pasos usando struts y eclipse tutorial Página 36 de 36
http://www.laliluna.de/tutorial-struts-eclipse-espanol.html 13-06-2007