SlideShare ist ein Scribd-Unternehmen logo
1 von 16
Downloaden Sie, um offline zu lesen
MAURO GOMEZ MEJIA
IX SEMESTRE INGENIERIA DE SISTEMAS
                             05-2010




                                                      Ingenio DS
                                          Programando Soluciones
                                       http://ingeniods.wordpres.com
En JSP existe una forma muy practica de programar usando el patrón MVC
(modelo-vista-controlador), donde se separan aun mas las capas, no es la
intención explicar el patrón MVC, sino explicar su aplicación en JSP.

En mi corta experiencia he visto varias formas de aplicar este patrón a aplicaciones
de las cuales he hecho mi propia implementación utilizando cosas de la una y de la
otra.

               Modelo               Vista           Controlador
         - Beans              - Paginas           - Controller
         - Action             JSP/HML
         - Actions
         - Model
         - WebModel




                                                                                Ingenio DS
                                                                    Programando Soluciones
                                                                 http://ingeniods.wordpres.com
Las clases que interviene las representamos en el siguiente diagrama
                                              - Bean Departamento
                                              - Bean Empleado
                                              - Model utiliza a Empleado
                                              - Model utiliza a Departamento
                                              - WebModel extiende de Model
                                              - Action utiliza a Model
                                              - AgregarEmpleado es una Action
                                              - AgregarDepartamento es una Action
                                              - Controller utiliza a Action (o cualquier clase
                                              que extiende de ella)




                                                                                Ingenio DS
                                                                   Programando Soluciones
                                                                http://ingeniods.wordpres.com
La manera en que inicia la aplicación




                     web.xml            InitModel.jsp           index.jsp

                 •Guarda        la   • Carga           la    • Carga         a
                 configuración       configuración de        InitModel.jsp
                 para conectarse     la BD y se
                 a la base de        conecta.
                 datos.              • Inicializa
                 •Guarda        la   (controller, baseurl,
                 configuración       absoluteurl).
                 (mapeo)       del
                 servlet.




                                                                                       Ingenio DS
                                                                           Programando Soluciones
                                                                        http://ingeniods.wordpres.com
La manera de interactuar de la aplicación es
                                                                    1.   Al ocurrir un evento, este
                                                                         (dependiendo, de los parámetros
                                                                         de mapeo) será direccionado al
                                            pagina.jsp                   Controller.
                                                                    2.   El Controller cargará la Action
                                   • Muestra información .               correspondiente      seteará  y
                                   • Llamado a servlets.                 ejecutará.
                                                                    3.   La Action se ejecuta y re-
                                                                         direcciona a una pagina o en
                        1                                                algunos casos a otro Action.
                                                                   3


        Controller.class                                           Action.class

  • Atender y re-direccionar los                             • Encapsular los métodos
  llamados a un Action.
                                              2              necesarios para permitir
  • Buscar en memoria o                                      seteo de parámetros (como
  cargar en memoria las                                      servlet).
                                                                                                3
  Actions                                                    • Encapsular los métodos
                                                             necesarios para permitir
                                                             ejecución (doGet, doPost)
                                                             •Re-direccionar.
                                                                                            Ingenio DS
                                                                                Programando Soluciones
                                                                             http://ingeniods.wordpres.com
La manera de interactuar de la aplicación es


                                               index.jsp

                                     •Carga la información de la
                                     configuración.
                                     • Incluye las otras paginas.
                        1            •Hace        los      llamados
                                     RegistarDepartamento         y          3
                                     RegistrarEmpleado.

           Controller                                                   RegistarDepartamento
                                                                         RegistrarEmpleado
  • Atender y re-direccionar   los
  llamados          a           un
                                                2                     • Realizan una operación.
  RegistarDepartamento           y                                    •.Re-direccional la pagina al
  RegistrarEmpleado..                                                 index.
  • La     primera    vez      los
  inicializa, la segunda       los
  busca en memoria.

                                                                                                      Ingenio DS
                                                                                          Programando Soluciones
                                                                                       http://ingeniods.wordpres.com
El archivo de configuración web.xml

El tipo de XML

<?xml version="1.0" encoding="ISO-8859-1"?>

<!DOCTYPE web-app
  PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
  "http://java.sun.com/dtd/web-app_2_3.dtd">

La configuración realmente se encuentra dentro de las etiquetas

 <web-app> y </web-app>

Nombre y descripción solo etiquetas informativas

 <display-name>EJERCICIO 13 MODELO-VISTA-CONTROLADOR</display-name>
 <description> XML de configuración para aplicar el patrón MVC en jsp</description>




                                                                                              Ingenio DS
                                                                                  Programando Soluciones
                                                                               http://ingeniods.wordpres.com
El archivo de configuración web.xml

Los parámetros o variables de contexto

<context-param> (declaramos un parámetro/variable de contexto )
    <param-name>nombre</param-name> (le damos un nombre)
    <param-value>valor</param-value> (le damos un valor)
  </context-param> (cerramos la declaración)

De la forma anterior declaramos 5 parámetros
• JdbcDriver = com.mysql.jdbc.Driver;
• databaseURL= jdbc:mysql://localhost:3306/ejercicios;
• databaseUser= root;
• databaseKey=;
• ABSOLUTEURL = http://localhost:8181/ejercicio13/;

Los parametros los usamos para:
• JdbcDriver = la clase driver que usaremos para conectarnos a la BD;
• databaseURL= URL de la base de datos;
• databaseUser= nombre de usuario a la base de datos;
• databaseKey=; clave para la base de datos
• ABSOLUTEURL = dirección a nuestra aplicación;
                                                                                       Ingenio DS
                                                                           Programando Soluciones
                                                                        http://ingeniods.wordpres.com
El archivo de configuración web.xml

Definición y mapeo del servlet

Esto hace referencia a la configuración del servlet quien responderá los llamados a los servlets

<servlet>(abrimos la etiqueta para describir un servlet)
   <servlet-name>controlador</servlet-name>(que llamaremos controlador)
   <servlet-class>org.Controller</servlet-class>(y la clase es org.Controller)
</servlet>(cerramos definicion del servlet)

<servlet-mapping>(el mapeo del servlet)
  <servlet-name>controlador</servlet-name>(el servlet que se llama controlador)
  <url-pattern>/servlet/*</url-pattern>(responderá los llamados que tengan esta estructura /servlet/*)
</servlet-mapping>(cerramos mapeo del servlet)

O sea       que nuestro servlet responderá           cualquier   url   a   la    que     llamemos   que    tenga
algo_aqui/servlet/cualquier_cosa_aqui




                                                                                                      Ingenio DS
                                                                                          Programando Soluciones
                                                                                       http://ingeniods.wordpres.com
InitModel.jsp

Inicializando la conexión a la BD

<jsp:useBean id="model" scope="session" class="org.WebModel">
           <%model.init(application);%>
</jsp:useBean>

1. Declaramos un bean de tipo WebModel que se llama modelo y que solo será visto en la session.
2. Dicho bean hereda de Model, pero tiene métodos para que funcione en entorno web (será capaz de
sacar los parámetros que declaramos en el web.xml).

<%
String BASEURL=request.getContextPath();(sacamos la URL base en este caso “/ejercicio13”)
String CONTROLLER=BASEURL+"/servlet“;(para los servlets en este caso “/ejercicio13/servlet”)
String ABSOLUTEURL=application.getInitParameter("ABSOLUTEURL");
(ABSOLUTEURL en este caso será http://localhost:8181/ejercicio13/)

(Los guardamos para que puedan ser vistos pr toda la aplicación)
application.setAttribute("CONTROLLER",CONTROLLER);
application.setAttribute("BASEURL",BASEURL);
application.setAttribute("ABSOLUTEURL",ABSOLUTEURL);
%>
                                                                                           Ingenio DS
                                                                               Programando Soluciones
                                                                            http://ingeniods.wordpres.com
LA PARTE JAVA

Controller.java

Controller específicamente es un servlet, con 3 métodos

doPost(): se ejecuta cuando en el formulario que lo llama el method=“post”, este método invoca al método
ejecutar().

doGet(): se ejecuta cuando en el formulario que lo llama el method=“get” o cuando es llamado por medio
de un enlace, este método invoca al método ejecutar().

ejecutar(): ejecutar en algunas convecciones doRequest() o run(), este método tiene que cargar a la acción
especifica que se quiere invocar.

En la session se van guardando las acciones a medida que se van cargando.




                                                                                               Ingenio DS
                                                                                   Programando Soluciones
                                                                                http://ingeniods.wordpres.com
LA PARTE JAVA


Controller.java
/*llamamos a la session*/                                        /*guardamos el mapa de acciones en la session*/
/*sacamos el mapa de acciones de la session*/                    /*si no se encontro la clase*/
/*si aun no exite*/                                              /* o no se pudo instansiar la clase*/
/*lo inicializamos*/                                             /*o hubo un acceso no autorizado*/
/*Sacamos el contexto de la aplicacion*/                         /*lanza una excepcion*/
/* obtenemos la ruta (Accion) a ejecutar*/                       /*sacamos el model de la session*/
/*si la ruta es null*/                                           /*si el model == null*/
/*lanzamos una exception*/                                       /*lanza una excepcion*/
/*declaramos una accion, y la cargamos de mapa de acciones*/     /*seteamos los parámetros de la accion*/
/*si la accion no se encuentra en el mapa*/                      /*y la ejecutamos*/
/* la ruta viene en el formato "Accion/Bean" */                  /*atrapamos cualquier excepcion */
/* la ruta viene en el formato "Palabra1/Palabra2" */            /*Pasamos el mensaje a una ServletException*/
/*dividimos la ruta en 2 justo por el caracter '/' */
/*si el numero de partes es diferente de 2 hubo algún error */   Para tener una idea mas clara mirar los
/*lanzamos una excepcion*/
/*tenemos la parte uno de la Accion */
                                                                 comentarios en la clase
/*tenemos la parte dos de la Accion */
/*nombre de la clase de la Accion= parte uno + parte dos */
/*Cargamos la clase*/
/*la instanciamos */
/*la guardamos en el mapa de acciones*/


                                                                                                                   Ingenio DS
                                                                                                 Programando Soluciones
                                                                                              http://ingeniods.wordpres.com
LA PARTE JAVA

Action.java

Esta clase es un “molde” para las acciones esta clase se encarga de declaras 4 variables y
sus métodos sets y aparte un método abstracto run. Todas las Acciones heredan de esta
clase.

Para mas detalles ver el código en la aplicación.




                                                                                   Ingenio DS
                                                                       Programando Soluciones
                                                                    http://ingeniods.wordpres.com
BASE DE
        MODELO                 DATOS




VISTA            CONTROLADOR




                 ACCIONES
                  ACCIONES
                   ACCIONES


                                        Ingenio DS
                            Programando Soluciones
                         http://ingeniods.wordpres.com
MODELO                                 BASE DE
                                                                         DATOS
                        -Model
                        -WebModel
                        -Beans
                        -Clases de la lógica de
                        negocio




           VISTA                                     CONTROLADOR
- Paginas para presentación                       -Controller
-Clases para presentación                         (re-direccionamiento de
(todo lo que interactué con el                    peticiones)
usuario).


                                                  ACCIONES
                                                   ACCIONES
                                                    ACCIONES
                                                                                 Ingenio DS
                                                                     Programando Soluciones
                                                                  http://ingeniods.wordpres.com
Ingenio DS
Programando Soluciones
http:/
     /ingeniods.wordpres.com

Weitere ähnliche Inhalte

Was ist angesagt? (19)

El patrón MVC
El patrón MVCEl patrón MVC
El patrón MVC
 
Mvc
MvcMvc
Mvc
 
Modelo vista controlador
Modelo vista controladorModelo vista controlador
Modelo vista controlador
 
Mvc
MvcMvc
Mvc
 
3-Unidad 1: Arquitectura de Diseño-1.2 Controlador-Introducción
3-Unidad 1: Arquitectura de Diseño-1.2 Controlador-Introducción3-Unidad 1: Arquitectura de Diseño-1.2 Controlador-Introducción
3-Unidad 1: Arquitectura de Diseño-1.2 Controlador-Introducción
 
MODELO VISTA CONTROLADOR EN PHP
MODELO VISTA CONTROLADOR EN PHPMODELO VISTA CONTROLADOR EN PHP
MODELO VISTA CONTROLADOR EN PHP
 
modelo vista controlador
modelo vista controladormodelo vista controlador
modelo vista controlador
 
Clase 10 mvc
Clase 10 mvcClase 10 mvc
Clase 10 mvc
 
Curso Java Avanzado 6 Struts
Curso Java Avanzado   6 StrutsCurso Java Avanzado   6 Struts
Curso Java Avanzado 6 Struts
 
Health WorldBank 2012
Health WorldBank 2012Health WorldBank 2012
Health WorldBank 2012
 
Programación Orientada a Eventos Java
Programación Orientada a Eventos JavaProgramación Orientada a Eventos Java
Programación Orientada a Eventos Java
 
Patrón de diseño Modelo-Vista-Controlador (MVC)
Patrón de diseño Modelo-Vista-Controlador (MVC)Patrón de diseño Modelo-Vista-Controlador (MVC)
Patrón de diseño Modelo-Vista-Controlador (MVC)
 
Ios.s4
Ios.s4Ios.s4
Ios.s4
 
Notas
NotasNotas
Notas
 
Mvc
MvcMvc
Mvc
 
Como crear un_ejecutable_en_visual_fox_p
Como crear un_ejecutable_en_visual_fox_pComo crear un_ejecutable_en_visual_fox_p
Como crear un_ejecutable_en_visual_fox_p
 
Curso Java Resumen - Curso 2005-2006
Curso Java Resumen - Curso 2005-2006Curso Java Resumen - Curso 2005-2006
Curso Java Resumen - Curso 2005-2006
 
Mvc
MvcMvc
Mvc
 
Overrides intecap-leo canton
Overrides intecap-leo cantonOverrides intecap-leo canton
Overrides intecap-leo canton
 

Ähnlich wie MVC

Cómo convertir su agdm de microsoft access a sql data
Cómo convertir su agdm de microsoft access a sql dataCómo convertir su agdm de microsoft access a sql data
Cómo convertir su agdm de microsoft access a sql dataJean Marin
 
5 c arquitecturas_aplicaciones_web
5 c arquitecturas_aplicaciones_web5 c arquitecturas_aplicaciones_web
5 c arquitecturas_aplicaciones_webJuy JLopez
 
Mobile Day - Lecciones de vuelo
Mobile Day - Lecciones de vueloMobile Day - Lecciones de vuelo
Mobile Day - Lecciones de vueloSoftware Guru
 
1/9 Curso JEE5, Soa, Web Services, ESB y XML
1/9 Curso JEE5, Soa, Web Services, ESB y XML1/9 Curso JEE5, Soa, Web Services, ESB y XML
1/9 Curso JEE5, Soa, Web Services, ESB y XMLJuan Carlos Rubio Pineda
 
Jobsket Spring 2GX Madrid
Jobsket Spring 2GX MadridJobsket Spring 2GX Madrid
Jobsket Spring 2GX MadridJobsket
 
Desarrollo rápido de aplicaciones (rad)
Desarrollo rápido de aplicaciones (rad)Desarrollo rápido de aplicaciones (rad)
Desarrollo rápido de aplicaciones (rad)Jean Carlos Toa
 
Framework presentacion
Framework presentacionFramework presentacion
Framework presentacionFrancisco Cain
 
Capacitacion Kumbia PHP Framework
Capacitacion Kumbia PHP FrameworkCapacitacion Kumbia PHP Framework
Capacitacion Kumbia PHP FrameworkDeivinson Tejeda
 
Ejemplo arquitectura 3 capas con access
Ejemplo arquitectura 3 capas con accessEjemplo arquitectura 3 capas con access
Ejemplo arquitectura 3 capas con accessuniv of pamplona
 
Paradigmas de programación
Paradigmas de programaciónParadigmas de programación
Paradigmas de programaciónMay Ibarra
 
Programación I 2. Arquitectura de Capas
Programación I 2. Arquitectura de CapasProgramación I 2. Arquitectura de Capas
Programación I 2. Arquitectura de CapasEdward Ropero
 
Patrones de diseño II
Patrones de diseño IIPatrones de diseño II
Patrones de diseño IIkaolong
 
Introdución a aplicaciones web en java
Introdución a aplicaciones web en java Introdución a aplicaciones web en java
Introdución a aplicaciones web en java Rodrigo Zottola Pareja
 
Arquitectura e-sijad
Arquitectura e-sijadArquitectura e-sijad
Arquitectura e-sijade-gim
 

Ähnlich wie MVC (20)

Cómo convertir su agdm de microsoft access a sql data
Cómo convertir su agdm de microsoft access a sql dataCómo convertir su agdm de microsoft access a sql data
Cómo convertir su agdm de microsoft access a sql data
 
5 c arquitecturas_aplicaciones_web
5 c arquitecturas_aplicaciones_web5 c arquitecturas_aplicaciones_web
5 c arquitecturas_aplicaciones_web
 
Mobile Day - Lecciones de vuelo
Mobile Day - Lecciones de vueloMobile Day - Lecciones de vuelo
Mobile Day - Lecciones de vuelo
 
1/9 Curso JEE5, Soa, Web Services, ESB y XML
1/9 Curso JEE5, Soa, Web Services, ESB y XML1/9 Curso JEE5, Soa, Web Services, ESB y XML
1/9 Curso JEE5, Soa, Web Services, ESB y XML
 
APLICACIONES N-CAPAS EN VISUAL NET
APLICACIONES N-CAPAS EN VISUAL NETAPLICACIONES N-CAPAS EN VISUAL NET
APLICACIONES N-CAPAS EN VISUAL NET
 
Administrador de sistemas
Administrador de sistemasAdministrador de sistemas
Administrador de sistemas
 
Jobsket Spring 2GX Madrid
Jobsket Spring 2GX MadridJobsket Spring 2GX Madrid
Jobsket Spring 2GX Madrid
 
Desarrollo rápido de aplicaciones (rad)
Desarrollo rápido de aplicaciones (rad)Desarrollo rápido de aplicaciones (rad)
Desarrollo rápido de aplicaciones (rad)
 
POO
POOPOO
POO
 
Framework presentacion
Framework presentacionFramework presentacion
Framework presentacion
 
Agente Hola Mundo
Agente Hola MundoAgente Hola Mundo
Agente Hola Mundo
 
Capacitacion Kumbia PHP Framework
Capacitacion Kumbia PHP FrameworkCapacitacion Kumbia PHP Framework
Capacitacion Kumbia PHP Framework
 
Ejemplo arquitectura 3 capas con access
Ejemplo arquitectura 3 capas con accessEjemplo arquitectura 3 capas con access
Ejemplo arquitectura 3 capas con access
 
Metodologías de desarrollo orientado a objetos
Metodologías de desarrollo orientado a objetosMetodologías de desarrollo orientado a objetos
Metodologías de desarrollo orientado a objetos
 
Paradigmas de programación
Paradigmas de programaciónParadigmas de programación
Paradigmas de programación
 
Programación I 2. Arquitectura de Capas
Programación I 2. Arquitectura de CapasProgramación I 2. Arquitectura de Capas
Programación I 2. Arquitectura de Capas
 
Patrones de diseño II
Patrones de diseño IIPatrones de diseño II
Patrones de diseño II
 
Introdución a aplicaciones web en java
Introdución a aplicaciones web en java Introdución a aplicaciones web en java
Introdución a aplicaciones web en java
 
Arquitectura e-sijad
Arquitectura e-sijadArquitectura e-sijad
Arquitectura e-sijad
 
Framework
FrameworkFramework
Framework
 

Mehr von Mauro Gomez Mejia (20)

Delegation
DelegationDelegation
Delegation
 
Container
ContainerContainer
Container
 
Interface
InterfaceInterface
Interface
 
Encapsulamiento
EncapsulamientoEncapsulamiento
Encapsulamiento
 
Polimorfismo (Clases Abstractas)
Polimorfismo (Clases Abstractas)Polimorfismo (Clases Abstractas)
Polimorfismo (Clases Abstractas)
 
Polimorfismo
PolimorfismoPolimorfismo
Polimorfismo
 
2011 horizon-report
2011 horizon-report2011 horizon-report
2011 horizon-report
 
Spring mvc
Spring mvcSpring mvc
Spring mvc
 
My batis
My batisMy batis
My batis
 
Orm
OrmOrm
Orm
 
2010 horizon-report
2010 horizon-report2010 horizon-report
2010 horizon-report
 
Persistencia de objetos con Hibernate
Persistencia de objetos con HibernatePersistencia de objetos con Hibernate
Persistencia de objetos con Hibernate
 
Sql injection
Sql injectionSql injection
Sql injection
 
J M E R L I N P H P
J M E R L I N P H PJ M E R L I N P H P
J M E R L I N P H P
 
Jquery para principianes
Jquery para principianesJquery para principianes
Jquery para principianes
 
Jmerlin php
Jmerlin phpJmerlin php
Jmerlin php
 
Comunicacion Java Envio De Datos Al Puerto Paralelo
Comunicacion Java Envio De Datos Al Puerto ParaleloComunicacion Java Envio De Datos Al Puerto Paralelo
Comunicacion Java Envio De Datos Al Puerto Paralelo
 
Cuadrados Mágicos De Orden Impar
Cuadrados Mágicos De Orden ImparCuadrados Mágicos De Orden Impar
Cuadrados Mágicos De Orden Impar
 
Redes De Computadores
Redes De ComputadoresRedes De Computadores
Redes De Computadores
 
Java Mail
Java MailJava Mail
Java Mail
 

Kürzlich hochgeladen

Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanamcerpam
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxMiguelAtencio10
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...JohnRamos830530
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.FlorenciaCattelani
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxAlan779941
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfvladimiroflores1
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estossgonzalezp1
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21mariacbr99
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfAnnimoUno1
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 

Kürzlich hochgeladen (11)

Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 

MVC

  • 1. MAURO GOMEZ MEJIA IX SEMESTRE INGENIERIA DE SISTEMAS 05-2010 Ingenio DS Programando Soluciones http://ingeniods.wordpres.com
  • 2. En JSP existe una forma muy practica de programar usando el patrón MVC (modelo-vista-controlador), donde se separan aun mas las capas, no es la intención explicar el patrón MVC, sino explicar su aplicación en JSP. En mi corta experiencia he visto varias formas de aplicar este patrón a aplicaciones de las cuales he hecho mi propia implementación utilizando cosas de la una y de la otra. Modelo Vista Controlador - Beans - Paginas - Controller - Action JSP/HML - Actions - Model - WebModel Ingenio DS Programando Soluciones http://ingeniods.wordpres.com
  • 3. Las clases que interviene las representamos en el siguiente diagrama - Bean Departamento - Bean Empleado - Model utiliza a Empleado - Model utiliza a Departamento - WebModel extiende de Model - Action utiliza a Model - AgregarEmpleado es una Action - AgregarDepartamento es una Action - Controller utiliza a Action (o cualquier clase que extiende de ella) Ingenio DS Programando Soluciones http://ingeniods.wordpres.com
  • 4. La manera en que inicia la aplicación web.xml InitModel.jsp index.jsp •Guarda la • Carga la • Carga a configuración configuración de InitModel.jsp para conectarse la BD y se a la base de conecta. datos. • Inicializa •Guarda la (controller, baseurl, configuración absoluteurl). (mapeo) del servlet. Ingenio DS Programando Soluciones http://ingeniods.wordpres.com
  • 5. La manera de interactuar de la aplicación es 1. Al ocurrir un evento, este (dependiendo, de los parámetros de mapeo) será direccionado al pagina.jsp Controller. 2. El Controller cargará la Action • Muestra información . correspondiente seteará y • Llamado a servlets. ejecutará. 3. La Action se ejecuta y re- direcciona a una pagina o en 1 algunos casos a otro Action. 3 Controller.class Action.class • Atender y re-direccionar los • Encapsular los métodos llamados a un Action. 2 necesarios para permitir • Buscar en memoria o seteo de parámetros (como cargar en memoria las servlet). 3 Actions • Encapsular los métodos necesarios para permitir ejecución (doGet, doPost) •Re-direccionar. Ingenio DS Programando Soluciones http://ingeniods.wordpres.com
  • 6. La manera de interactuar de la aplicación es index.jsp •Carga la información de la configuración. • Incluye las otras paginas. 1 •Hace los llamados RegistarDepartamento y 3 RegistrarEmpleado. Controller RegistarDepartamento RegistrarEmpleado • Atender y re-direccionar los llamados a un 2 • Realizan una operación. RegistarDepartamento y •.Re-direccional la pagina al RegistrarEmpleado.. index. • La primera vez los inicializa, la segunda los busca en memoria. Ingenio DS Programando Soluciones http://ingeniods.wordpres.com
  • 7. El archivo de configuración web.xml El tipo de XML <?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"> La configuración realmente se encuentra dentro de las etiquetas <web-app> y </web-app> Nombre y descripción solo etiquetas informativas <display-name>EJERCICIO 13 MODELO-VISTA-CONTROLADOR</display-name> <description> XML de configuración para aplicar el patrón MVC en jsp</description> Ingenio DS Programando Soluciones http://ingeniods.wordpres.com
  • 8. El archivo de configuración web.xml Los parámetros o variables de contexto <context-param> (declaramos un parámetro/variable de contexto ) <param-name>nombre</param-name> (le damos un nombre) <param-value>valor</param-value> (le damos un valor) </context-param> (cerramos la declaración) De la forma anterior declaramos 5 parámetros • JdbcDriver = com.mysql.jdbc.Driver; • databaseURL= jdbc:mysql://localhost:3306/ejercicios; • databaseUser= root; • databaseKey=; • ABSOLUTEURL = http://localhost:8181/ejercicio13/; Los parametros los usamos para: • JdbcDriver = la clase driver que usaremos para conectarnos a la BD; • databaseURL= URL de la base de datos; • databaseUser= nombre de usuario a la base de datos; • databaseKey=; clave para la base de datos • ABSOLUTEURL = dirección a nuestra aplicación; Ingenio DS Programando Soluciones http://ingeniods.wordpres.com
  • 9. El archivo de configuración web.xml Definición y mapeo del servlet Esto hace referencia a la configuración del servlet quien responderá los llamados a los servlets <servlet>(abrimos la etiqueta para describir un servlet) <servlet-name>controlador</servlet-name>(que llamaremos controlador) <servlet-class>org.Controller</servlet-class>(y la clase es org.Controller) </servlet>(cerramos definicion del servlet) <servlet-mapping>(el mapeo del servlet) <servlet-name>controlador</servlet-name>(el servlet que se llama controlador) <url-pattern>/servlet/*</url-pattern>(responderá los llamados que tengan esta estructura /servlet/*) </servlet-mapping>(cerramos mapeo del servlet) O sea que nuestro servlet responderá cualquier url a la que llamemos que tenga algo_aqui/servlet/cualquier_cosa_aqui Ingenio DS Programando Soluciones http://ingeniods.wordpres.com
  • 10. InitModel.jsp Inicializando la conexión a la BD <jsp:useBean id="model" scope="session" class="org.WebModel"> <%model.init(application);%> </jsp:useBean> 1. Declaramos un bean de tipo WebModel que se llama modelo y que solo será visto en la session. 2. Dicho bean hereda de Model, pero tiene métodos para que funcione en entorno web (será capaz de sacar los parámetros que declaramos en el web.xml). <% String BASEURL=request.getContextPath();(sacamos la URL base en este caso “/ejercicio13”) String CONTROLLER=BASEURL+"/servlet“;(para los servlets en este caso “/ejercicio13/servlet”) String ABSOLUTEURL=application.getInitParameter("ABSOLUTEURL"); (ABSOLUTEURL en este caso será http://localhost:8181/ejercicio13/) (Los guardamos para que puedan ser vistos pr toda la aplicación) application.setAttribute("CONTROLLER",CONTROLLER); application.setAttribute("BASEURL",BASEURL); application.setAttribute("ABSOLUTEURL",ABSOLUTEURL); %> Ingenio DS Programando Soluciones http://ingeniods.wordpres.com
  • 11. LA PARTE JAVA Controller.java Controller específicamente es un servlet, con 3 métodos doPost(): se ejecuta cuando en el formulario que lo llama el method=“post”, este método invoca al método ejecutar(). doGet(): se ejecuta cuando en el formulario que lo llama el method=“get” o cuando es llamado por medio de un enlace, este método invoca al método ejecutar(). ejecutar(): ejecutar en algunas convecciones doRequest() o run(), este método tiene que cargar a la acción especifica que se quiere invocar. En la session se van guardando las acciones a medida que se van cargando. Ingenio DS Programando Soluciones http://ingeniods.wordpres.com
  • 12. LA PARTE JAVA Controller.java /*llamamos a la session*/ /*guardamos el mapa de acciones en la session*/ /*sacamos el mapa de acciones de la session*/ /*si no se encontro la clase*/ /*si aun no exite*/ /* o no se pudo instansiar la clase*/ /*lo inicializamos*/ /*o hubo un acceso no autorizado*/ /*Sacamos el contexto de la aplicacion*/ /*lanza una excepcion*/ /* obtenemos la ruta (Accion) a ejecutar*/ /*sacamos el model de la session*/ /*si la ruta es null*/ /*si el model == null*/ /*lanzamos una exception*/ /*lanza una excepcion*/ /*declaramos una accion, y la cargamos de mapa de acciones*/ /*seteamos los parámetros de la accion*/ /*si la accion no se encuentra en el mapa*/ /*y la ejecutamos*/ /* la ruta viene en el formato "Accion/Bean" */ /*atrapamos cualquier excepcion */ /* la ruta viene en el formato "Palabra1/Palabra2" */ /*Pasamos el mensaje a una ServletException*/ /*dividimos la ruta en 2 justo por el caracter '/' */ /*si el numero de partes es diferente de 2 hubo algún error */ Para tener una idea mas clara mirar los /*lanzamos una excepcion*/ /*tenemos la parte uno de la Accion */ comentarios en la clase /*tenemos la parte dos de la Accion */ /*nombre de la clase de la Accion= parte uno + parte dos */ /*Cargamos la clase*/ /*la instanciamos */ /*la guardamos en el mapa de acciones*/ Ingenio DS Programando Soluciones http://ingeniods.wordpres.com
  • 13. LA PARTE JAVA Action.java Esta clase es un “molde” para las acciones esta clase se encarga de declaras 4 variables y sus métodos sets y aparte un método abstracto run. Todas las Acciones heredan de esta clase. Para mas detalles ver el código en la aplicación. Ingenio DS Programando Soluciones http://ingeniods.wordpres.com
  • 14. BASE DE MODELO DATOS VISTA CONTROLADOR ACCIONES ACCIONES ACCIONES Ingenio DS Programando Soluciones http://ingeniods.wordpres.com
  • 15. MODELO BASE DE DATOS -Model -WebModel -Beans -Clases de la lógica de negocio VISTA CONTROLADOR - Paginas para presentación -Controller -Clases para presentación (re-direccionamiento de (todo lo que interactué con el peticiones) usuario). ACCIONES ACCIONES ACCIONES Ingenio DS Programando Soluciones http://ingeniods.wordpres.com
  • 16. Ingenio DS Programando Soluciones http:/ /ingeniods.wordpres.com