Programación Web Frameworks para el Desarrollo de Aplicaciones Web

Slides:



Advertisements
Presentaciones similares
Desarrollo de aplicaciones en n- capas
Advertisements

I. Sesión 2 Noviembre 2010 Claudio Chaucca Umana
Internet y tecnologías web
CUPS Configuración y Uso de Paquetes de Software
Curso de java básico (scjp)
Programación Orientada a Objeto 1
Agregar código a un formulario Web Form con Microsoft ASP.NET
Validator Framework. Jakarta Commons Validator Paquete de clases de utilidad para la implementación de reglas de validación de datos de entrada de forma.
Patrón MVC con STRUTS.
Modelando aplicaciones
CGI I La mayor parte de los elementos HTML de que disponemos permite al visitante visualizar los contenidos de un sitio, pero no interactuar con él. Dicho.
Arquitectura CLARO-TECNOTREE
¿QUÉ SON LAS BASES DE DATOS?
"java del lado del servidor" Servlet y JSP Java Server Pages.
4ta. Reunión SpringHispano & JavaMexico Struts 2.
Framework Hexápodo PHP fácil, rápido y sin dolor
Índice 1. Introducción, objetivos y justificación del proyecto.
JSP Copyright ISIPE – Instituto de Servicios Informáticos para Empresas – Universidad Siglo 21 – Cualquier copia u otro uso debe ser autorizado expresamente.
Teoría de los lenguajes Proyecto SIGU Equipo Nº3 Universidad Argentina J. F. Kennedy Sede: Don Bosco Integrantes: Irene Arias Fernández Mariana Pacheco.
Curso de Java y Aplicaciones Web
85 motivos* para Ruby on Rails
Java 2 Platform Enterprise Edition
RESUMENCURSO STRUTS 2 Resumen de lo visto en este tercer módulo: VISTA del framework Struts 2 Debes tener los conceptos muy claros sobre: Results UI Tags.
Ing. CIP Fabián Silva Alvarado
Implementación del patrón Modelo-Vista-Controlador
Tecnologías para el desarrollo de aplicaciones Web
Java Server Faces.
Desarrollo de Aplicaciones Utilizando Java Edición Empresarial – JEE6
InfoPath Ventajas y Uso.
Una base de datos es un “almacén” que nos permite guardar grandes cantidades de información de forma organizada para que luego podamos encontrar y utilizar.
ASP.NET es una nueva y potente tecnología para escribir páginas web dinámica. Es una importante evolución respecto a las antiguas páginas ASP de Microsoft.
Contenido: 1- Que es el .Net Framework 2- Arquitectura en .Net
SPRING MVC.
Tutor: Ing. Juan E. Talavera Horn 2010 GWT – EJB Patrones de diseño e integración.
CURSO STRUTS 2 RESUMEN Resumen de lo visto en este primer módulo de INTRODUCCIÓN al framework Struts 2 Debes tener los conceptos muy claros sobre: Framework.
Enterprise Java Beans. EJBs Beans gestionados por un contenedor del servidor de aplicaciones para gestionar el acceso a recursos (bases de datos, colas.
Aplicaciones Web M.C. Jorge Eduardo Ibarra Esquer
MÓDULO 1: Introducción al framework Struts 2
Universidad Central de Venezuela Facultad de Ciencias Postgrado en Ciencias de la Computación Sistemas Distribuidos Albany Márquez.
Lenguajes de Programación
FRAMEWORK VS Código fuente
Aplicaciones Web de Servidor
Daniel Fernández Lanvin Capa de Presentación. Daniel Fernández Lanvin Capa de Presentación Responsabilidades Navegabilidad del sistema Formateo de los.
Etiquetas e Internacionalización. Recursos de String/Manejo de Errores  Recursos de String Todos los strings usados en mensajes en JSPs tanto de datos.
Introducción al Lenguaje. ¿ Qué es PHP ? O Hypertext Pre-processoes (PHP) es un lenguaje de "código abierto" interpretado, de alto nivel, embebido en.
TEMA 9: DIAGRAMA DE CLASE EN UML
MVC con Spring Temas Selectos de Cómputo Cibernética 912 Agosto-Diciembre 2005.
I NGENIERÍA DE S OFTWARE L ABORATORIO IX Struts Eduardo Saavedra A. 27/10/2009.
Manual Desarrollo Flex – J2EE. Contenidos Análisis y Diseño 1 Implementación 2 J2EE 3 Pruebas 4.
Jakarta Struts version Juan Manuel Zorrilla Gamarra Mario Titto Acostupa.
CONTRATOS DE CLIENTES Orlando Sedamano Cornejo Marco Bustinza
Roles de Open UP.
DISEÑO CURRICULAR Presentado por: Cesar Augusto Sáenz María Alejandra Hernández 1.contenidos curriculares de competencia.
JSF (JAVA SERVER FACES)
Luis Ponce Cabello.  Primera Parte : JSF  Segunda Parte : Facelets  Tercera Parte : Icefaces.
Guadalupe Andrade Mociño.  Significa Modelo Vista Controlador  Es un patrón de diseño  Esta compuesto por tres grandes capas: modelo, vista y controlador.
Colegio de Bachilleres Plantel 13 Xochimilco - Tepepan
Your Logo ING. FREDY ALEXANDER MARTINEZ. Here comes your footer  Page 2 Este patrón fue descrito por primera vez por Trygve Reenskaug en 1979, y la implementación.
Programación Orientada a Objetos: CLASES Y OBJETOS
Centro Universitario UAEM Zumpango Ingeniería en Computación Agosto 2015.
Servicios Web Conjunto de aplicaciones o de tecnologías con capacidad para interoperar en la Web. Estas aplicaciones o tecnologías intercambian datos entre.
WINDOWS SERVER 2008 r2 ADMINISTRACION DE RECURSOS: Con el Administrador de recursos del sistema de Windows del sistema operativo Windows Server® 2008 R2,
Programación orientada a objetos La programación orientada a objetos o POO (OOP según sus siglas en inglés) es un paradigma de programación que usa objetos.
Helpers en ASP.NET MVC3. Introducción Los helpers son una herramienta muy potente para generar nuestro propio código HTML dentro de las vistas. Los helpers.
Softlogia S.R.L. Formación de Recursos Humanos Java Server Faces Instructor: Martin R. Baspineiro.
Introducción a programación web Martin Esses. Formularios HTML se utilizan para pasar datos a un servidor. Un formulario HTML puede contener elementos.
SIGEP Presentación de Resultados SIGEP. SIGEP Ambiente de Desarrollo  Plataforma Java ( J2EE,JRE,JDK,JVM ).  Contenedor Web ( Tomcat 5 )  Control de.
SYMFONY Información del Framework. Síntesis de Symfony  Es un framework diseñado para optimizar el desarrollo de aplicaciones web creado con PHP5. 
Definición: Es un estilo de programación, su objetivo primordial es la separación de la capa de presentación, capa de negocio y la capa de datos. ARQUITECTURA.
Helpers en ASP.NET MVC3. Introducción Los helpers son una herramienta muy potente para generar nuestro propio código HTML dentro de las vistas. Los helpers.
Transcripción de la presentación:

Programación Web Frameworks para el Desarrollo de Aplicaciones Web Profesor: Ing. Juan Talavera Asistentes: Ing. Marcelo Alvarez Univ. Eduardo Rivas Univ. Santiago Yegros 2008

Objetivos Explicar lo que son los frameworks, su propósito y sus características principales. Reconocer la importancia de la utilización de los mismos hoy en día. Ofrecer una introducción básica a los frameworks actuales y las herramientas disponibles para los mismos. Discutir sobre el uso conveniente de los mismos.

Contenido Frameworks. Concepto. Características. Struts Spring MVC Java Server Faces Ruby on Rails ASPX.NET Otros frameworks Conclusiones

Concepto de Framework En su forma más simple, un framework es un conjunto de interfaces, clases y/o componentes que cooperan entre sí de manera a resolver un tipo de problema de software específico.

Características Posee múltiples clases o componentes, cada uno de los cuales proveen una abstracción de algún concepto en particular. El framework define como sus abstracciones trabajarán juntos de manera a resolver el problema. Sus componentes son reutilizables. Utilización de patrones para la solución de problemas comunes.

Características que se encuentran en la mayoría de los frameworks actuales Abstracción de URLs y sesiones. Acceso a datos. Controladores. Autentificación y Control de Acceso. Internacionalización. Separación entre diseño y contenido.

Propósitos (1) Facilitar el desarrollo de software. Pasar más tiempo identificando requerimientos de SW que tratar con detalles de bajo nivel. Proveer una estructura y una metodología de trabajo definida.

Propósitos (2) Ayudar al desarrollo de software, proporcionando una estructura definida, la cual ayuda a crear aplicaciones con mayor rapidez. Ayudar a realizar el mantenimiento del sitio gracias a la organización que se mantiene durante el desarrollo de la aplicación.

Tipos de Frameworks. Ejemplos: Orientados a la interfaz de usuario: Java Server Faces. Orientado a publicación de documentos: Cocoon. Orientado a eventos: Struts, Tapestry, etc.

MVC – Model 2

Struts 1

Struts 1 Implementa la arquitectura del modelo 2 - patrón de diseño MVC. Creada por Craig McClanahan y donada a la Apache Software Foundation en el 2000 (Actualmente pertenece a Apache Jakarta)

¿Qué proporciona Struts? Lógica de navegación entre páginas Binding entre java y el html Validación de entradas Mecanismos para el manejo y reporte de errores Internacionalización (i18n)

Flujo de Control de Struts

Componentes Principales (1) Actions: Posible acción a invocar. Son objetos que heredan de la clase Action donde se escribe que es lo que se hará. Por ejemplo se puede decidir invocar alguna regla de negocio y en base a su resultado mostrar la vista que corresponda. ActionMapping: mapea las URLs a acciones (objetos). Es decir, se le da un nombre a cada Clase Action de manera que puedan ser invocadas desde el cliente como un String. ActionServlet: El Servlet Controlador. Ejecuta acciones invoacndo al método execute() de la Clase Action.

Componentes Principales (2) ActionForm: JavaBean con propiedades que corresponden a los controles de un formulario HTML. Los parámetros son mapeados a propiedades del bean. El programador define un form bean extendiendo la clase org.apache.struts.action.ActionForm (o de forma declarativa usando org.apache.struts.action.DynaActionForm) Hay que definir cada una de las propiedades en la clase y escribir los getters/setters correspondientes, siguiendo las reglas de JavaBeans. Después de escribir el código del form bean, es necesario asociarlo con una o más acciones a través del fichero de configuración de Struts struts- config.xml

Struts-config.xml (1) El archivo <struts-config> contiene dos elementos importantes que son usados para describir las acciones: <form-beans> contiene la definición de los beans para cada formulario. Atributos importantes: - name: identificador único para el bean. - type: tipo del bean de formulario.

Struts-config.xml (2) <action-mapping> contiene nuestras definiciones de acciones. Usamos un elemento <action> por cada una de las acciones que se desea definir. Cada elemento action requiere que se definan los siguientes atributos: - path: el path a la clase action en relación al contexto de la aplicación. - type: el nombre de la clase Action. - name: el nombre del elemento <form-bean> asociado a la acción.

Struts-config.xml - Ejemplo <form-beans> <form-bean name="loginForm" type="com.empresa.LoginForm"/> </form-beans> <action-mappings> <action path="/inicio" forward="/jsp/inicio.jsp"/> <action path="/login" forward="/jsp/login.jsp"/> <action path="/slogin" type="com.empresa.LoginAction" name="loginForm" scope="request" validate="true" input="/jsp/login.jsp"> <forward name="exito" path="/jsp/inicio.jsp"/> <forward name="falla" path="/jsp/login.jsp"/> </action> </action-mappings>

Struts Tag Libraries La framework Struts proporciona un conjunto de 4 librerías de etiquetas, que asisten en la tarea de la creación de la vista de MVC para evitar incluir código Java en los JSPs : Bean Tags: manejo de los beans a los que tiene acceso la página. HTML Tags: utilizado para generar formularios HTML que interatuan con la API de Struts. Logic Tags: permite direccionar el flujo de ejecución de la página según condiciones. Nested Tags: permite el anidado de componentes.

Struts Tag Libraries - Ejemplo <%@ taglib uri="/tags/struts-html" prefix="html" %> … <html:errors/> <html:form action="/LogonSubmit" focus="username"> <TABLE border="0" width="100%"> <TR> <TH align="right">Username:</TH> <TD align="left"><html:text property="username"/></TD> </TR><TR> <TH align="right">Password:</TH> <TD align="left"><html:password property="password"/></TD> <TD align="right"><html:submit/></TD> <TD align="left"><html:reset/></TD></TR> </TABLE> </html:form>

Validación de Entradas Struts provee 2 mecanismos de validación de las entradas ingresadas: Redefiniendo el método validate() de los ActionForms A través de lo que primero fue un plugin y luego se incorporó a la versión principal y que se denomina struts-validator. Permite la validación tanto en el lado cliente (javascript) como el lado servidor.

Validación de Entradas - Ejemplo Definir el archivo de validación. Ejemplo: validation.xml <form-validation> <formset> <form name="FormInicio"> <field property="nombreusuario“ depends="required"> <arg0 key="forms.nombreusuario"/> </field> </form> </formset> </form-validation>

Manejo de Errores (1) Se recomienda que el manejo de errores se lleve a cabo dentro del método execute() y el control se transfiera a la vista apropiada errors.add("passphrase",new ActionError("error.passphrase.required")); Visualización de los errores en JSP: <html:errors property=“passphrase”/>

Manejo de Errores (2) Recursos de String Todos los strings usados en mensajes en JSPs tanto de datos de aplicación como de errores pueden ser colocados en un archivo de recursos (ApplicationResources.properties) Struts proporciona etiquetas personalizadas JSP tags para acceder a estos recursos: <bean:message key="prompt.goodguess.heading"/>

Internacionalización (i18n) Struts soporta internacionalización a través de ficheros de recursos, sus librerías de etiquetas personalizadas y Java Locales. Se pueden definir strings a visualizar y luego utilizarlos en los JSPs. Ej: ApplicationResources.properties Otros ficheros de recursos adicionales pueden ser definidos que incluyen el idioma a usar en el nombre del fichero. Ejemplos: ApplicationResources_es.properties ApplicationResources_br.properties Para cambiar el idioma preferido en IE: ToolsInternet OptionsLanguages Los navegadores envían la cabecera HTTP Accept-Language en cada petición que indica cuál es el idioma preferido por el usuario.

Spring MVC

Spring MVC Spring es un framework open source para desarrollar aplicaciones usando tecnología Java. Como el alcance de este framework es muy amplio, generalmente se suele mezclar con otros frameworks quedando Spring como una capa intermedia en la que se basan las demás herramientas.

¿Qué permite Spring MVC? Facilidad de mantenimiento. Separación limpia entre Controladores, Modelos y Vistas. Lo cual, a su vez, facilita el desarrollo en equipo disciplinado. Independencia en la Vista de la aplicación. Facilidad a la hora de testear la aplicación. Validaciones Facilidad de trabajar con los componentes gracias a la implementación del patrón de diseño DI "Dependency Injection"

Ejemplo de procesamiento de una solicitud en Spring MVC

Componentes Principales de Spring MVC (1) DispatcherServlet: es la implementación del Front Controller. El cual se encarga de administrar los request. Controlador: encapsula la lógica de navegación. Crean los componentes necesarios para manejar los request. Vista: muestra la salida. Ej: JSP, JSTL, Velocity, FreeMarker, PDF, etc.

Componentes Principales de Spring MVC (2) ModelAndView: creados por el controlador. Permiten asociar modelos a las vistas. ViewResolver: permiten mapear nombres lógicos de vistas a una implementación de la misma. HandlerMapping: interfaz utilizado por el DispatcherServlet para mapear los request a los respectivos controladores.

Spring MVC & Dependency Injection (DI) Todos los componentes MVC son configurados en un fichero de recursos como por ej: ApplicationContext. De este modo, todos los componentes MVC pueden ser configurados utilizando DI. <bean id="springCheersController" class="com...web.SpringCheersController"> <property name="methodNameResolver“ ref=“springCheersMethodResolver"/> <property name="service" ref="service"/> </bean>

Validación en Spring MVC (1) public class CustomerValidator implements Validator { public boolean supports(Class cls) { return (cls == Customer.class); } public void validate(Object obj, Errors errors) { Customer customer = (Customer) obj; ValidationUtils.rejectIfEmptyOrWhitespace(errors, "name", "required", "required");

Validación en Spring MVC (2) Luego se debe configurar el Controlador del CustomerForm: WEB-INF/springmvc-servlet.xml <bean id="customerForm" class="com.springcheers.web.CustomerForm"> <property name="formView" value="editCustomer"/> <property name="successView" value="redirect:list.htm"/> <property name="service" ref="service"/> <property name="validator" ref="customerValidator"/> </bean>

Spring MVC - Ejemplo Definición del Modelo … public class Product implements Serializable { private String description; private Double price; public void setDescription(String s) { description = s; } public String getDescription() { return description; Getters & Setters

Definición del Manager Spring MVC - Ejemplo Definición del Manager package … import … public class ProductManager implements Serializable { private List products; public void setProducts(List p) { products = p; } public List getProducts() { return products;

Definición del Controlador Spring MVC - Ejemplo Definición del Controlador public class SpringappController implements Controller { protected final Log logger = LogFactory.getLog(getClass()); private ProductManager prodMan; public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String now = (new java.util.Date()).toString(); logger.info("returning hello view with " + now); Map myModel = new HashMap(); myModel.put("now", now); myModel.put("products",getProductManager().getProducts()); return new ModelAndView("hello", "model", myModel); } …

Spring MVC - Ejemplo Definir el controlador y manejador que utilizará la aplicación: springapp-servlet.xml … <bean id="springappController" class="web.SpringappController"> <property name="productManager"> <ref bean="prodMan"/> </property> </bean> <bean id=" productManager " class="bus.ProductManager"> <property name="productDao" ref="productDao"/>

Definición de la Vista: hello.jsp Spring MVC - Ejemplo Definición de la Vista: hello.jsp … <h1><fmt:message key="heading"/></h1> <p><fmt:message key="greeting"/> <c:out value="${model.now}"/> </p> <h3>Products</h3> <c:forEach items="${model.products}" var="prod"> <c:out value="${prod.description}"/> <i>$<c:out value="${prod.price}"/></i><br><br> </c:forEach>

Spring MVC Vs. Struts Spring MVC es muy flexible, ya que implementa toda su estructura mediante interfaces no como Struts que obliga a heredar de clases concretas tanto en sus Actions como en sus Forms. Spring MVC no obliga a utilizar JSP, permite utilizar XLST, Velocity o implementar tu propio lenguaje para integrarlo en la Vista de la aplicación. Los controllers de Spring MVC se configuran mediante IoC como los demás objetos. No existen ActionForms, se enlaza directamente con los beans de negocio.

Struts 2

Struts 2 Apache Struts 2 fue originalmente conocido como WebWork 2. Luego de trabajar de manera independiente por varios años, las comunidades de WebWork y Struts unen sus fuerzas para crear lo que hoy día conocemos como Struts2.

Algunas Mejoras en Struts 2 Soporte para Ajax. Fácil integración con Spring & DI. Tecnología de renderizado: JSP, Freemarker, Velocity, JasperReports, … Los formularios son clases Java planas (POJO). No más ActionForm. Las acciones son clases Java planas (POJO). Se puede utilizar cualquier clase como Action. Tecnología basada en plugins. No más configuración. Facilidad de realizar pruebas sobre las acciones Y más…

Struts 2 en una Arquitectura Web

Arquitectura MVC de Struts 2

Ciclo de Vida de las Peticiones en Struts 2 El usuario envía una petición: Llega un Request. El Request es interpretado por el DispatcherFilter y determina que Action y que conjunto de Interceptors invocar. Cada Interceptor ejecuta sus acciones previas a la ejecución del método de Action a invocar: I18nInterceptor, ValidationInterceptor, etc. Ejecución de la acción. Se examina el resultado obtenido del Action y se determina el Result correspondiente. Mediante el Result determinado se genera la vista. La vista generada retorna al cliente.

Struts 2 - Ejemplo POJO + JPA Annotations @Entity public class Person extends BaseObject { private Long id; private String firstName; private String lastName; @Id @GeneratedValue(strategy = GenerationType.AUTO) public Long getId() { return this.id; } @Column(name="first_name", length=50) public String getFirstName() { return this.firstName; } @Column(name="last_name", length=50) public String getLastName() { return this.lastName; } /* And setters */ } http://www.appfuse.org

Action. Controlador y Modelo Struts 2 - Ejemplo Action. Controlador y Modelo public class PersonAction extends BaseAction { private GenericManager<Person, Long> personManager; private List persons; public void setPersonManager(GenericManager<Person, Long> personManager) { this.personManager = personManager; } public List getPersons() { return persons; public String list() { persons = personManager.getAll(); return SUCCESS; http://www.appfuse.org

Definición de la Vista: personList.jsp Struts 2 - Ejemplo Definición de la Vista: personList.jsp <c:out value="${buttons}" escapeXml="false" /> <s:set name="persons" value="persons" scope="request"/> <display:table name="persons" class="table" id="personList" export="true" pagesize="25"> <display:column property="id" href="editPerson.html" paramId="id" paramProperty="id" titleKey="person.id"/> <display:column property=“firstName" titleKey="person.firstName"/> <display:column property=“lastName " titleKey="person.lastName"/> … </display:table> http://www.appfuse.org

Definición de la acción: struts.xml Struts 2 - Ejemplo Definición de la acción: struts.xml <action name="persons" class=“...PersonAction" method="list"> <result>/WEB-INF/pages/personList.jsp</result> </action> http://www.appfuse.org

Struts 2 - Ejemplo Vista: personList.jsp

Agregando edit() & delete() a PersonAction.java Struts 2 - Ejemplo Agregando edit() & delete() a PersonAction.java private Person person; private Long id; … public String delete() { personManager.remove(person.getId()); saveMessage(getText("person.deleted")); return SUCCESS; } public String edit() { if (id != null) { person = personManager.get(id); } else { person = new Person(); } http://www.appfuse.org

Agregando el método save() a PersonAction.java Struts 2 - Ejemplo Agregando el método save() a PersonAction.java public String save() throws Exception { if (cancel != null) return "cancel"; if (delete != null) return delete(); boolean isNew = (person.getId() == null); person = personManager.save(person); String key = (isNew) ? "person.added" : "person.updated"; saveMessage(getText(key)); if (!isNew) return INPUT; else return SUCCESS; } http://www.appfuse.org

Definición de la acción: struts.xml Struts 2 - Ejemplo Definición de la acción: struts.xml <action name="editPerson" class=“..PersonAction" method="edit"> <result>/WEB-INF/pages/personForm.jsp</result> <result name="error">/WEB-INF/pages/personList.jsp</result> </action> <action name="savePerson" class=“..PersonAction" method="save"> <result name="input">/WEB-INF/pages/personForm.jsp</result> <result name="cancel" type="redirect-action">persons</result> <result name="delete" type="redirect-action">persons</result> <result name="success" type="redirect-action">persons</result> http://www.appfuse.org

Definición de la Vista: personForm.jsp Struts 2 - Ejemplo Definición de la Vista: personForm.jsp <s:form id="personForm" action="savePerson" method="post" validate="true"> <s:hidden name="person.id" value="%{person.id}"/> <s:textfield key="person.firstName" required="true" cssClass="text medium"/> <s:textfield key="person.lastName" required="true" cssClass="text medium"/> … </s:form> http://www.appfuse.org

Struts 2 - Ejemplo Vista: personForm.jsp http://www.appfuse.org

Java Server Faces (JSF)

Java Server Faces (JSF) Es un framework de desarrollo basado en el patrón MVC. Al igual que Struts, JSF pretende normalizar y estandarizar el desarrollo de aplicaciones web. El creador de Struts (Craig R. McClanahan) también es líder de la especificación de JSF. JSF nos ofrece un marco de trabajo que facilita el desarrollo de aplicaciones, separando las diferentes capas de una arquitectura: presentación, reglas y entidades de negocio.

JSF - Características JSF trata la vista (el interfaz de usuario) de una forma algo diferente a lo que estamos acostumbrados en aplicaciones web. Trata de emular a Swing, VB o Delphi. JSF es muy flexible. Por ejemplo nos permite crear nuestros propios componentes. Un modelo de trabajo basado en componentes UI (user interface), definidos por medio de etiquetas y XML. Asocia (de forma modular) cada componente gráfico con los datos. Incluye la capa de control, definida de forma declarativa en archivos XML. Lo que implica control de eventos y errores.

JSF – Características (2) Validación en cliente y en servidor. Control de mensajes y roles. Navegación. JSF proporciona un modelo de navegación declarada, que permite enlazar en las aplicaciones una vista a otra(faces-config.xml).

JSF – Ejemplo En el archivo faces-config.xml Estando en la pagina inputname.jsp, si el resultado de ejecutar la misma es greeting pasamos a la pagina greeting.jsp <navigationrule> <fromviewid>/pages/inputname.jsp </fromviewid> <navigationcase> <fromoutcome>greeting</fromoutcome> <toviewid>/pages/greeting.jsp</toviewid> </navigationcase> </navigationrule>

JSF – Ejemplo (2) Creamos luego un JSF- Manager Bean. public class PersonBean { String personName; public String getPersonName() { return personName; } public void setPersonName(String name) { personName = name;

JSF – Ejemplo (3) Entonces en nuestro archivo faces-config.xml, tendríamos que registrar el Bean. <managedbean> <managedbeanname>personBean</managedbeanname> <managedbeanclass>pack.PersonBean</managedbeanclass> <managedbeanscope>request</managedbeanscope> </managedbean>

JSF – Ejemplo (4) Entonces creamos nuestro formulario inputname.jsp. <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %> <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %> <f:loadBundle basename="jsfks.bundle.messages" var="msg"/> <html> <head> <title>Pagina de Prueba</title> </head> <body> <f:view> <h1><h:outputText value="JSF prueba"/></h1> <h:form id="helloForm"> <h:outputText value="Escribe tu nombre"/> <h:inputText value="#{personBean.personName}" /> <h:commandButton action="greeting" value="Saludame" /> </h:form> </f:view> </body> </html>

JSF – Ejemplo (5) Entonces creamos nuestro formulario greeting.jsp <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %> <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %> <f:loadBundle basename="jsfks.bundle.messages" var="msg"/> <html> <head> <title>greeting page</title> </head> <body> <f:view> <h:form> <h:outputText value="Bienvenido" />, <h:outputText value="#{personBean.personName}" /> </h:form> </f:view> </body> </html>

Ruby on Rails

RoR Ruby on Rails es un entorno de desarrollo web de código abierto que está optimizado para satisfacción de los programadores y de la productividad. Te permite escribir un buen código favoreciendo la convención antes que la configuración. Rails está basado en estos principios de desarrollo: No te Repitas (Don’t Repeat Yourself). Convención por encima de la Configuración (Convention Over Configuration).

RoR - Esquema

RoR - Características Basado en la arquitectura MVC Código Limpio, compacto y legible. Brinda Abstracción de objetos Persistentes Brinda soporte para pruebas unitarias y funcionales Contiene unos generadores de código, llamados Helpers Gran integración con Ajax Dispone de Ruby Gems que permite una fácil instalación, añadir nuevos módulos y actualización del software. Tiene soporte para varias bases de datos, como MySQL, PostgreSQL, SQLite, Oracle, SQL Server, DB2, o Firebird.

RoR - Modelo En las aplicaciones web orientadas a objetos sobre bases de datos, el Modelo consiste en las clases que representan a las tablas de la base de datos. En Ruby on Rails, las clases del Modelo son gestionadas por ActiveRecord. Por lo general, lo único que tiene que hacer el programador es heredar de la clase ActiveRecord::Base, y el programa averiguará automáticamente qué tabla usar y qué columnas tiene (No siempre).

RoR – Modelo (2) Las definiciones de las clases también detallan las relaciones entre clases con sentencias de mapeo objeto relacional. class Persona < ActiveRecord::Base has_one :detalle has_many :telefono end class Detalle < ActiveRecord::Base belongs_to :persona class Telefono < ActiveRecord::Base

RoR - Vista En MVC, Vista es la lógica de visualización, o cómo se muestran los datos de las clases del Controlador. Con frecuencia en las aplicaciones web la vista consiste en una cantidad mínima de código incluido en HTML. Existen en la actualidad muchas maneras de gestionar las vistas. El método que se emplea en Rails por defecto es usar Ruby Embebido (archivos .rhtml), que son básicamente fragmentos de código HTML con algo de código en Ruby, siguiendo una sintaxis similar a JSP

RoR - Controlador La implementación del Controlador es manejada por el ActionPack de Rails, que contiene la clase ApplicationController. Una aplicación Rails simplemente hereda de esta clase y define las acciones necesarias como métodos, que pueden ser invocados desde la web, por lo general en la forma http://aplicacion/ejemplo/metodo, que invoca a EjemploController#metodo, y presenta los datos usando el archivo de plantilla /app/views/ejemplo/metodo.rhtml, a no ser que el método redirija a algún otro lugar.

RoR - Ejemplo Primeramente crearemos nuestro proyecto. $ rails prueba Ahora supongamos que nuestra tabla personas tiene las siguientes columnas: Id Nombre Apellido Creamos un modelo Persona $ ruby script\generate model Persona Esto creara un archivo persona.rb class Persona < ActiveRecord::Base end

RoR – Ejemplo (2) Ahora debemos crear el controlador de forma similar al modelo: $ ruby script\generate controller Persona Esto creara un archivo persona_controller.rb class PersonaController < ApplicationController scaffold :persona def index render_text “Hola Mundo” end

RoR – Ejemplo (3) Ahora solo debemos levantar el servidor WeBring: $ ruby script\server Y probar nuestra aplicación, en http://127.0.0.1:3000/persona/index Ahora probaremos lo mas importante, con la simple línea scaffold:persona RoR no genera los siguiente: Creación de Persona en http://127.0.0.1:3000/persona/new Modificación de Persona en http://127.0.0.1:3000/persona/edit Listado de Personas en http://127.0.0.1:3000/persona/list Eliminación de Persona en http://127.0.0.1:3000/persona/delete

RoR – Ejemplo (4) Pero todo lo mostrado anteriormente se puede lograr ejecutando: $ ruby /script/generate scaffold Persona

ASPX.NET

ASP.net ASP.NET es un framework para aplicaciones web desarrollado y comercializado por Microsoft. ASP.NET esta construido sobre el Common Language Runtime, permitiendo a los programadores escribir código ASP.NET usando cualquier lenguaje admitido por el .NET Framework.

ASP.net (2) Los formularios web están contenidos en archivos con una extensión ASPX; en jerga de programación, estos archivos típicamente contienen etiquetas HTML o XHTML estático , y también etiquetas definiendo Controles Web que se procesan del lado del servidor y Controles de Usuario donde los desarrolladores colocan todo el código estático y dinámico requerido por la pagina web.

ASP.net - Características Mejor rendimiento de su predecesor. Rapidez en la programación, mediante el uso de diversos tipos de controles. Servicios Web, herramientas para compartir datos entre distintos sitios. Mayor seguridad.

ASP.net – Ejemplo Simple <%@ Page language="VB"%> <%@ Import Namespace="System.data.oledb" %> <script runat="server"> Sub Nombre_change(sender as object, e as EventArgs) Mensaje.text = "Buenos días " + Nombre.text End sub </script> <html> <body> <font face="verdana" size=2>Esta es la página </font><br> <form runat="server"> Tu nombre: <asp:TextBox id="Nombre" OnTextChanged="Nombre_change" runat="server" autopostback="true"/> <asp:label id="Mensaje" runat="server" /> </form> </body> </html>

Otros Frameworks

Otros Frameworks Tapestry Google Web Toolking (GWT) EJB RIFE Trails Wicket Etc, etc, etc..

En Resumen… Los frameworks permiten: El desarrollo ágil de aplicaciones. Diseño reutilizable. Mantenimiento de aplicaciones. La elección de un framework depende del tipo de aplicación a ser desarrollada.

Tarea 4 Volver a implementar el mismo sistema desarrollado en la Tarea 2 pero esta vez haciendo uso exclusivo de algún framework web propuesto en clase. Fecha de entrega: Martes 02-09-2008 Integrantes: 2 personas. Entregar en un CD conteniendo: Directorio IMPLEMENTACION, dentro del cual estaría la estructura de directorios de la aplicación. Y un archivo esquema.sql, con el script de creación de la base de datos. Documento Integrates.txt, con los nombres de los integrantes del grupo. Documento Indicaciones.txt, con las indicaciones necesarias para hacer las pruebas a la aplicación. Documento Consideraciones.pdf, donde se expliquen problemas encontrados durante la implementación, y sus soluciones, así como cualquier observación que consideren relevante en relación al trabajo y las herramientas utilizadas. OBS 1: Al igual que la Tarea 2, utilizar el gestor de base de datos PostgreSQL. OBS 2: Se evaluará, más que nada, la correcta utilización del framework.