Download 8CM1 Practica 7: Aplicación minima usando el framework Struts
Document related concepts
no text concepts found
Transcript
INSTITUTO POLITECNICO NACIONAL Escuela Superior de Computó Desarrollo de aplicaciones para la web II Maestro: Cifuentes Álvarez Alejandro Sigfrido. Alumno: Ruiz Hernández Alfredo Grupo: 8CM1 Practica 7: Aplicación minima usando el framework Struts Abril de 2012 Introducción. Cuando se inventaron los Servlets Java, muchos programadores se dieron cuenta de que eran más rápidos y más potentes que el CGI estándar, portables, y extensibles infinitamente. Pero escribir infinitas sentencias println() para enviar HTML al navegador era problemático. La respuesta fueron las JavaServer Pages, que nos dejaron escribir servlets dentro de ellas. Ahora los desarrolladores podían mezclar fácilmente HTML con código Java, y tener todas las ventajas de los servlets. Las aplicaciones web Java se convirtieron rápidamente en "centradas-en-JSP". Esto, por sí sólo no era malo, pero no hacía nada por resolver problemas de control de flujo y otros problemas propios de las aplicaciones Web. Claramente se necesitaba otro modelo. Algunos desarrolladores se dieron cuenta que las JavaServer Pages y los servlets se podrían usar juntos para desplegar aplicaciones web. Los servlets podrían ayudar con el control de flujo, y las JPS’s podrían enfocarse en escribir HTML. Usar JSP y servlets juntos se ha dado a conocer como el Modelo 2 (cuando usar sólo JSP’s era el Modelo 1).El proyecto Struts lo lanzó en Mayo del 2000, Craig R. McClanahan para proporcionar un framework MVC estándar a la comunidad Java. ¿Qué es Struts? “Es un framework de la capa de presentación que implementa el patrón de patrón MVC (modelovista Controlador) en Java” Evidentemente, como todo framework intenta simplificar notablemente la implementación de una arquitectura según el patrón MVC. El mismo separa muy bien lo que es la gestión del workflow de la aplicación, del modelo de objetos de negocio y de la generación de interfaz Objetivo de la práctica: Conocer las características básicas de una aplicación web usando el framework Struts. Desarrollo de la práctica. Crear un nuevo proyecto en Netbeans (ArchivoProyecto Nuevo) En categoría elegir Java Web, y en proyectos seleccionar Web Applicaction Escribir el nombre del proyecto y dar clic en siguiente Elegir el Servidor web a utilizar y clic en continuar (Se debe de tener configurado correctamente el servidor que se elija). En la opción de elegir framework, elegir Struts, dejar las opciones por defecto y finalizar. La estructura de nuestro proyecto será: Crear una Pagina JSP llamada login.jsp en el proyecto ubicada en la raíz del proyecto, y otra página JSP llamada success.jsp ubicada dentro de la carpeta WEB-INF, esto se hace por que las páginas a las que no pueden tener acceso cualquier usuario no deben estar en la raíz de la página web. La estructura del proyecto quedara de la siguiente manera. La página success.jsp debe tener el siguiente contenido: <%@page contentType="text/html" pageEncoding="UTF-8"%> <%@taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF8"> <title>Login exitoso</title> <link rel="stylesheet" type="text/css" href="stylesheet.css"> </head> <body> <h1>Felicidades!!</h1> <p>Te has registrado como:</p> <p>Tu nombre es: <bean:write name="LoginForm" property="name"/>.</p> <p>Tu e-mail es: <bean:write name="LoginForm" property="email"/>.</p> </body> </html> Y la página de login.jsp debe contener lo siguiente: <%@page contentType="text/html" pageEncoding="UTF-8"%> <%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%> <%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF8"> <title>Página de inicio</title> <link rel="stylesheet" type="text/css" href="stylesheet.css"> </head> <body> <html:form action="/login"> <table border="1"> <tbody> <tr> <td colspan="2"> <bean:write name="LoginForm" property="error" filter="false"/> </td> </tr> <tr> <td>Escribe tu nombre:</td> <td><html:text property="name"/></td> </tr> <tr> <td>Escribe tu corre e-mail:</td> <td><html:text property="email"/></td> </tr> <tr> <td></td> <td><html:submit value="Login"/></td> </tr> </tbody> </table> </html:form> </body> </html> Crearemos un Struts ActionForm Bean en la categoría de Struts Lo llamaremos LoginForm y elegiremos que sea parte del paquete com.myapp.struts El contenido de LoginForm.java será: package com.myapp.struts; import javax.servlet.http.HttpServletRequest; import org.apache.struts.action.ActionErrors; import org.apache.struts.action.ActionMapping; import org.apache.struts.action.ActionMessage; public class LoginForm extends org.apache.struts.action.ActionForm { private String name; private String email; private String error; public String getError() { return error; } public void setError() { this.error = "<span style='color:red'>Por favor llena los campos con datos validos</span>"; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public String getName() { return name; } public void setName(String name) { this.name = name; } public LoginForm() { super(); } public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { ActionErrors errors = new ActionErrors(); if (getName() == null || getName().length() < 1) { errors.add("name", new ActionMessage("error.name.required")); } return errors; } } Después crear un Struts Action Nombrarlo LoginAction y en la casilla ActionPath escribir “/login” como se muestra en la imagen, de igual forma elegir como paquete com.myapp.struts En la siguiente ventana se deben hacer 3 cosas: - Borrar la diagonal invertida en la casilla de Input Resource Elegir Request en la opcion Scope Desactivar la casilla para validar el Action Form Bean La ventana debe quedar como se muestra a continuación (Recuerda elegir LoginForm en la opción LoginForm Bean Name): El código de LoginAction.java debe ser el siguiente: package com.myapp.struts; import import import import import javax.servlet.http.HttpServletRequest; javax.servlet.http.HttpServletResponse; org.apache.struts.action.ActionForm; org.apache.struts.action.ActionForward; org.apache.struts.action.ActionMapping; public class LoginAction extends org.apache.struts.action.Action { private static final String SUCCESS = "success"; private static final String FAILURE = "failure"; @Override public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { LoginForm formBean = (LoginForm)form; String name = formBean.getName(); String email = formBean.getEmail(); if((name == null) || email == null || name.equals("") || email.indexOf("@") == -1){ formBean.setError(); return mapping.findForward(FAILURE); } return mapping.findForward(SUCCESS); } } Ahora se deben de agregar las entradas en el archivo struts-config.xml Ir a la parte del código donde dice: <action-mappings> <action name="LoginForm" path="/login" scope="request" type="com.myapp.struts.LoginAction" validate="false"/> <action path="/Welcome" forward="/welcomeStruts.jsp"/> </action-mappings> En la palabra LoginFormdar clic derecho, en el menú seleccionar Struts y dentro de él elegir add forward En el cuadro que aparece llenar la casilla de name forward con success, la casilla de Resource File elegir el archivo de success.jsp y en Action elegir /login como se muestra en la imagen Dar clic en add y el código ahora será el siguiente: <action-mappings> <action name="LoginForm" path="/login" scope="request" type="com.myapp.struts.LoginAction" validate="false"> <forward name="success" path="/WEB-INF/success.jsp"/> </action> <action path="/Welcome" forward="/welcomeStruts.jsp"/> </action-mappings> Agregar otra etiqueta para la acción de error, si los campos no son llenados de manera correcta se mostrara nuevamente la página de login, asi que ahora aremos lo hecho anteriormente pero la ventana quedara de la siguiente forma: Y ahora el código será el siguiente: <action-mappings> <action name="LoginForm" path="/login" scope="request" type="com.myapp.struts.LoginAction" validate="false"> <forward name="success" path="/WEB-INF/success.jsp"/> <forward name="failure" path="/login.jsp"/> </action> <action path="/Welcome" forward="/welcomeStruts.jsp"/> </action-mappings> Ahora para poder ejecutar la aplicación debemos de abrir el archivo web.xml y en la pestaña de pages en la casilla de WelcomeFiles escribir login.jsp, esto se hace para que se esta página aparezca como inicio cuando ejecutemos el proyecto. Si ahora nos cambiamos a la etiqueta de vista xml podremos ver que la etiqueta welcome-file es login.jsp Para que la página aparezca con estilo lo aremos con la siguiente hoja de estilos (llamada stylesheet.css), este archivo estará guardado dentro de la carpeta web dentro del proyecto. body { font-family: Verdana, Arial, sans-serif; font-size: smaller; padding: 50px; color: #555; width: 650px; } h1 { letter-spacing: 6px; font-size: 1.6em; color: #be7429; font-weight: bold; } h2 { text-align: left; letter-spacing: 6px; font-size: 1.4em; color: #be7429; font-weight: normal; width: 450px; } table { width: 550px; padding: 10px; background-color: #c5e7e0; font-family: sans-serif; } td { padding: 10px; } a { color: #be7429; text-decoration: none; } a:hover { text-decoration: underline; } .popupBox { position: absolute; top: 170px; left: 140px; } .popupCell { background-color: #fffafa; } .popupCell:hover { background-color: #f5ebe9; } .popupItem { color: #333; text-decoration: none; font-size: 1.2em; } La línea que agrega la hoja de estilos es: <link rel="stylesheet" type="text/css" href="stylesheet.css"> Esta línea está ubicada dentro del archivo login.jsp y success..jsp La estructura de nuestro proyecto quedara de la siguiente forma: Ahora si ejecutamos el proyecto aparecerá la página de inicio: Si no llenamos los campos o si el correo electrónico no contiene la arroba (@) saldrá la misma página diciéndonos que ha ocurrido un error: Si por el contrario llenamos los campos correctamente, entonces se mostrara la página de success.jsp Bibliografía: http://es.scribd.com/doc/97147/introduccion-al-framework-struts http://netbeans.org/kb/docs/web/quickstart-webapps-struts.html#overview