Ejercicio Guiado 2

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 9

SERVLETS, JSP Y PATRÓN MVC.

1. Objetivo
El objetivo primordial de esta práctica es el aprendizaje del patrón MVC. Dicho aprendizaje lo vamos a
efectuar de tal manera que, partiendo de los ejemplos de las prácticas anteriores, consigamos unos
resultados similares pero adaptados a la arquitectura MVC.
Además, en esta práctica vamos a ir un paso más allá y vamos a definir y utilizar por primera vez
descriptores de despliegue (archivo web.xml).
2. Introducción a los patrones

2.1. ¿Qué son los patrones?

Los patrones de software son soluciones reutilizables a los problemas que ocurren durante el desarrollo
de un sistema de software o aplicación. Estos proporcionan un proceso consistente o diseño que uno o
más desarrolladores pueden utilizar para alcanzar sus objetivos. También proporciona una arquitectura
uniforme que permite una fácil expansión, mantenimiento y modificación de una aplicación.

Para ampliar información sobre este tema, puede acudirse al libro “Patrones de Diseño” de E. Gamma et
al., Ed. Addison-Wesley.
Para ampliar información sobre los patrones que se suelen usar en aplicaciones J2EE :
http://developer.java.sun.com/developer/technicalArticles/J2EE/patterns/

2.2. Estructura de los patrones

Los patrones usualmente se describen con la siguiente información:

1. Descripción del problema: Que permitirá el patrón y ejemplos de situaciones del mundo real.
2. Consideraciones: Que aspectos fueron considerados para que tomara forma esta solución.
3. Solución general: Una descripción básica de la solución en si misma.
4. Consecuencias: Cuales son los pros y contras de utilizar esta solución.
5. Patrones relacionados: Otros patrones con uso similar que deben ser considerados como
alternativa.

2.3. Tipos de Patrones

Existen diferentes tipos de patrones. Dependiendo del nivel conceptual de desarrollo donde se apliquen,
se distinguen (de más abstractos a más concretos): patrones de análisis, patrones arquitectónicos,
patrones de diseño y patrones de implementación. Al respecto puede encontrarse más información en:
http://www.cmcrossroads.com/bradapp/docs/patterns-intro.html
Dependiendo del propósito funcional del patrón, se distinguen los siguientes tipos:
 Fundamental: construye bloques de otros patrones.
 Presentación: Estandariza la visualización de datos.
 De creación: Creación condicional de objetos.
 Integración: Comunicación con aplicaciones y sistemas y recursos externos.
 De particionamiento: Organización y separación de la lógica compleja, conceptos y actores en
múltiples clases.
 Estructural: Separa presentación, estructuras de datos, lógica de negocio y procesamiento de
eventos en bloques funcionales.
 De comportamiento: Coordina/Organiza el estado de los objetos.
 De concurrencia: Maneja el acceso concurrente de recursos.

El patrón Modelo-Vista-Controlador (MVC) es un ejemplo de patrón arquitectónico estructural.


3. Patrón MVC

3.1. Introducción
Las aplicaciones Web pueden desarrollarse utilizando cualquier arquitectura posible. La arquitectura del
patrón Modelo-Vista-Controlador es un paradigma de programación bien conocido para el desarrollo de
aplicaciones con interfaz gráfica (GUI). En esta práctica implementaremos una aplicación web utilizando el
MVC.

3.2. ¿En qué consiste el MVC?

El principal objetivo de la arquitectura MVC es aislar tanto los datos de la aplicación como el estado
(modelo) de la misma, del mecanismo utilizado para representar (vista) dicho estado, así como para
modularizar esta vista y modelar la transición entre estados del modelo (controlador). Las aplicaciones
MVC se dividen en tres grandes áreas funcionales:

 Vista: la presentación de los datos

 Controlador: el que atenderá las peticiones y componentes para toma de decisiones de la aplicación
 Modelo: la lógica del negocio o servicio y los datos asociados con la aplicación

El propósito del MVC es aislar los cambios. Es una arquitectura preparada para los cambios, que
desacopla datos y lógica de negocio de la lógica de presentación, permitiendo la actualización y desarrollo
independiente de cada uno de los citados componentes.
El MVC consta de:

 Una o más vistas de datos


 Un modelo, el cual representa los datos y su comportamiento
 Un controlador que controla la transición entre el procesamiento de los datos y su visualización.
A continuación, mostramos un esquema de este modelo:

4. MVC y J2EE
Las aplicaciones de MVC pueden ser implementadas con J2EE utilizando JSP para las vistas, servlets
como controladores y, al no haber estudiado aún JavaBeans, que son idóneos para el modelo,
utilizaremos de nuevo unos servlets para la capa de acción del modelo y otros servlets claramente
diferenciados que manejarán JDBC para la capa de estado del modelo. Por ejemplo:

5. Ejemplo aplicando el MVC


Creamos un proyecto web llamado MVCEjem01, eliminamos el index.html, creamos dos packages, el
primero lo llamamos controlador y el segundo modelo, en el primero iremos a construir el archivo del
controlador que en nuestro caso será un servlet y en el modelo estará el Java Beans con la estructura
de los datos.
Creamos el index.jsp o index.html con un formulario que nos permita incluir el nombre y la edad de
una persona, añadimos el botón que ejecuta el formulario.

El archivo incluiría un texto como el siguiente:

Creamos el controlador incluido del package respectivo, esté será un servlet que es una clase que
debe pertenecer al proyecto, le damos como nombre Procesar, damos siguiente, aparecerá una
nueva ventana como la siguiente:
En ese nuevo recuadro marcamos la casilla “Add information to desployment descriptor (web.xml)”
(Servidor de despliegue), que incluye todos los servlets que participan en el proyecto, conservamos el
nombre, pero cambiamos el URL Patterns, como es una aplicación web se escribe en minúscula
/procesar.do (Por ser controlador), los framework lo definen de esa manera.
Al revisar el documento del servlet, nos damos cuenta tiene muchas clases y es una derivada de
HttpServlet que nos permite procesar como una aplicación web, el método principal processRequest
hace esta impresión, pero en este caso no va a realizar esta impresión, la tarea de este archivo es
evaluar, controlar y ejecutar, en el siguiente contenido del archivo:

Eliminamos desde el response.setContentType hasta la llave que cierra el try, debemos corregir el
index.jsp y cambiar el formulario con la línea que direccione al servlet con el método post.

Agregamos al servlet las líneas que permiten recibir los parámetros del index.jsp con las siguientes
líneas:
Validamos que los datos tengan valores escritos por medio de la siguiente línea;

Recordemos que el servlet no es el encargado de la vista, al aparecer este error debemos enviarlo al
que controla la vista es decir creamos un jsp que se encargue de ello, este archivo lo llamaremos
errorcampos.jsp y contiene el mensaje y el enlace a la página index.jsp y tendría como contenido lo
siguiente:

Ahora debemos completar el servlet llamando a esta página agregando la siguiente línea:

Si los datos están escritos se deben mostrar por ello debemos agregar otro llamado a otra página para
que los muestre la llamaremos exito.jsp, en ella debemos mostrar los datos, pero tenemos el problema de
que estos no se pueden accesar directamente, por ello debemos definir el modelo para que las variables
estén disponibles en forma global.
Creamos una clase normal dependiendo del package modelo, lo llamaremos persona y en ella
estarán definidas las variables nombre y edad con sus respectivos constructores, setters y getters,
como lo muestra la figura siguiente:
Ahora completamos el servlet creando una variable P1 con los datos del nombre y edad, teniendo en
cuenta que debemos convertir la edad a entero, por otra parte debemos crear una variable persona1 que
me permita usarla en el jsp llamado éxito.

Ahora sobre exito.jsp agregamos las líneas que me permitan recuperar los datos, recuperamos un
objeto tipo sesión llamado persona1 pero teniendo en cuenta de hacerlo con un casting e importando la
clase correspondiente Persona que pertenece a modelo.

Al final el contenido del archivo exito.jsp es como aparece en las siguientes líneas:
Ahora puede que el error sea al digitar la edad, puede escribirse un valor no numérico, para ello vamos a
crear una nueva página, ajustamos el controlador agregando un try con su respectivo catch que nos envie
a la página errorrnumero.jsp, el contenido del archivo sería el siguiente:
El contenido del archivo errornumero.jsp es como sigue:

El mensaje de error cuando no se llenan los campos es como sigue:

El mensaje de error cuando se llena la edad con un dato un numérico es como aparece en la
siguiente figura:

El resultado de la ejecución completa y adecuada es como sigue:

También podría gustarte