j2ee_jsf(Ejemplo Con Base de Datos)

download j2ee_jsf(Ejemplo Con Base de Datos)

of 27

description

j2ee_jsf(EJEMPLO CON BASE DE DATOS).pdf

Transcript of j2ee_jsf(Ejemplo Con Base de Datos)

  • Java Server Faces (JSF) NetBeans 5.5

    Copyright Wilder Lpez M. 1

    Creando una Aplicacin J2EE con JSF y Base de Datos en NetBeans 5.5

    Autor: Wilder Lpez Melndez1 [email protected]

    Fecha: 28 de junio de 2007

    I.- Introduccin

    Como analistas y programadores vamos desarrollando a diario nuestras habilidades para resolver problemas usuales que se presentan en el desarrollo del software. Por cada problema que se nos presenta pensamos distintas formas de resolverlo, incluyendo soluciones exitosas que ya hemos usado anteriormente en problemas similares. Es as que a mayor experiencia que tengamos, nuestro abanico de posibilidades para resolver un problema crece, pero al final siempre habr una sola solucin que mejor se adapte a nuestra aplicacin.

    Por lo tanto, los patrones de diseo son soluciones exitosas a problemas comunes. Existen muchas formas de implementar patrones de diseo. Los detalles de las implementaciones son llamadas estrategias, es decir soluciones tpicas de desarrollo. Hay patrones que abarcan las distintas etapas del desarrollo; desde el anlisis hasta el diseo y desde la arquitectura hasta la implementacin.

    Un patrn es una solucin comprobada para un problema en un contexto, cuanto ms amplio sea el contexto, ms amplio ser el campo de aplicacin del patrn, en trminos de software, los patrones son esencialmente la destilacin de la sabidura obtenida por especialistas sobre lo que funciona bien a la hora de especificar, disear e implementar software.

    (GoF, que en espaol es la pandilla de los cuatro) desde luego que ellos no son los inventores ni los nicos involucrados, pero ese fue luego de la publicacin de ese libro que empez a difundirse con ms fuerza la idea de patrones de diseo. El grupo de GoF clasificaron los patrones en 3 grandes categoras basadas en su propsito:

    Creacionales: Patrones creacionales tratan con las formas de crear instancias de objetos. El objetivo de estos patrones es de abstraer el proceso de instanciacin y ocultar los detalles de cmo los objetos son creados o inicializados.

    Estructurales: Los patrones estructurales describen como las clases y objetos pueden ser combinados para formar grandes estructuras y proporcionar nuevas funcionalidades. Estos objetos adicionados pueden ser incluso objetos simples u objetos compuestos.

    Comportamiento: Los patrones de comportamiento nos ayudan a definir la comunicacin e iteracin entre los objetos de un sistema. El propsito de este patrn es reducir el acoplamiento entre los objetos.

    La arquitectura Modelo-Vista-Controlador es un patrn de diseo clsico que es muy usado en aplicaciones que requieren la habilidad de mantener mltiples vistas del mismo dato; es decir, se usa para administrar la informacin y notificar algn cambio en la misma, por lo que su funcionalidad est dirigida a un propsito comn.

    Utilizando este tipo de patrones conseguimos: ms calidad, mejor mantenibilidad, perder el miedo a empezar un proyecto desde cero, pero una de las cosas ms importantes es la normalizacin y estandarizacin del desarrollo de Software.

    En este artculo vamos a ver un framework de desarrollo que sigue el patrn MVC. Los frameworks son muy tiles ya que nos permiten no tener que reinventar la rueda cada vez. Es decir el framework no slo sigue el patrn, sino que me da unas directrices de trabajo, y nos da gran parte del trabajo ya hecho.

  • Java Server Faces (JSF) NetBeans 5.5

    Copyright Wilder Lpez M. 2

    JSF (Java Server Faces) es un framework de desarrollo basado en el patrn MVC (Modelo Vista Controlador). Al igual que Struts, JSF pretende normalizar y estandarizar el desarrollo de aplicaciones web. Hay que tener en cuenta JSF es posterior a Struts, y por lo tanto se a nutrido de la experiencia de este, mejorando algunas sus deficiencias. De hecho el creador de Struts (Craig R. McClanahan) tambin es lder de la especificacin de JSF.

    Vamos a crear una aplicacin tpica de mantenimiento de dos tablas relacionadas que me permitan Crear un nuevo registro, modificarlo, eliminarlo y mostrar en una lista los registros de las tablas.

    Debo mencionar que realizar este tipo de aplicacin por ms sencilla que parezca sin utilizar un framework demanda mucho tiempo su realizacin, obviamente respetando todas las reglas del Patrn MVC, es decir crear una clase que me permita manejar la Base de Datos (Modelo), crear un servlets (controlador) para controlar todas las transacciones, y finalmente los JSPs (Vistas) que me permitirn mostrar los datos al usuario en formato HTML, en el rea de Desarrollo donde trabajo, desarrollamos estos tipos de aplicaciones, bajo este esquema.

    II. Desarrollo de la aplicacin JSF

    Primero empezaremos definiendo nuestra Base de Datos que ser como sigue:

    Aqu observamos la relacin de las tablas facultad a escuela, una facultad puede tener una o muchas escuelas, esto lo vemos por que el campo (PK) Facultad.idfacultad a migrado a la tabla Escuela.idfacultad como (FK).

    Despus de descargar el NetBeans 5.5 desde http://www.netbeans.org vamos a crear un nuevo proyecto

  • Java Server Faces (JSF) NetBeans 5.5

    Copyright Wilder Lpez M. 3

    Elegimos una aplicacin Web (Web Application)

  • Java Server Faces (JSF) NetBeans 5.5

    Copyright Wilder Lpez M. 4

    Elegimos el nombre el directorio de trabajo del NetBeans, esto para mi es fundamental, siempre insisto con mis alumnos a prestar atencin a ese cuadro de dialogo, por que aqu defino donde se guardar mi proyecto.

    Elegimos soporte para trabajar con el FrameWork JavaServer Faces - JSF

  • Java Server Faces (JSF) NetBeans 5.5

    Copyright Wilder Lpez M. 5

    Ahora tendremos un entorno de trabajo de JSF, por defecto nos proporciona dos JSP

    Vamos a conectarnos a la base de datos donde se encuentran nuestras tablas Facultad y Escuela.

    2.1. Conexin a la Base Datos en Forma Nativa

    Para ello debemos utilizar los drives del motor de base de datos del que se esta utilizando, para este ejemplo estamos utilizando SQL Server 2000, tengo los drivers en una carpeta, y es necesario primero copiarlos a la carpeta src en la carpeta donde se esta grabando nuestro proyecto. Para nuestro caso la ruta exacta es:

    D:\DataWLM\Proyectos\Articulos\webJSF\src\java

    Copiar la carpeta lib, a este lugar

  • Java Server Faces (JSF) NetBeans 5.5

    Copyright Wilder Lpez M. 6

    Comprobamos si el paquete lib ya se muestra en nuestro proyecto.

    Aadimos los .Jar al paquete Libraries, pulsando clic derecho sobre el paquete y seleccionando la opcin Add JAR/Flder

    Seleccionamos la carpeta donde esta la carpeta lib que copiamos en el prrafo anterior y empezamos a aadir uno a uno los componentes mbase.jar, mssqlserver.jar, msutil.jar, sqljdb.jar

  • Java Server Faces (JSF) NetBeans 5.5

    Copyright Wilder Lpez M. 7

    Finalmente debemos tener en el paquete Libraries todos los componentes aadidos.

  • Java Server Faces (JSF) NetBeans 5.5

    Copyright Wilder Lpez M. 8

    Como ya tenemos los componentes para poder conectarse con el motor de Base de Datos, pasemos hacer justamente eso. Para ello pulsamos clic en Runtime, Databases

    Primero debemos crear el Driver, clic derecho New Driver, luego pulsamos clic en Add y aadiremos el Jar mssqlserver.jar

    Ahora ya tenemos conectado el driver SQL Server 2000, pulsamos clic derecho Connect Using, en esta ventana tenemos que colocar el servidor el puerto y la base de datos jdbc:microsoft:sqlserver://:[;DatabaseName=], en nuestro caso vamos a utilizar lo siguiente: jdbc:microsoft:sqlserver://localhost:1432;DatabaseName=demo. Usuario y clave sa

  • Java Server Faces (JSF) NetBeans 5.5

    Copyright Wilder Lpez M. 9

    Cambiamos el HOST, PORT y DB

    2.2. Conexin a la Base Datos Por medio del ODBC

    Tambin pueden conectarse a la Base de Datos por medio del Windows con ODBC, con esta opcin no necesitas tener los drivers del motor de la Base Datos, el Sistema Operativo se encarga de hacer un puente entre el JDBC de java el Motor de BD. Seguramente te estars preguntando cual de las dos opciones es la ms adecuada y la ms rpida?. La respuesta es, la primera opcin, conectarse por medio de los Drivers que es la forma Nativa del JDBC. ODBC lo utilizamos con fines acadmicos, aparte de que esta amarrado al S.O Windows.

    Para crear un ODBC debemos entrar al Panel de Control de Windows y seleccionar la opcin Herramientas Administrativas Orgenes de datos (ODBC)

  • Java Server Faces (JSF) NetBeans 5.5

    Copyright Wilder Lpez M. 10

    En esta cuadro de dialogo debemos agregar un origen de datos de usuario, pulsando clic en el botn Agregar.

    Seleccionamos el motor de base datos en nuestro caso SQL Server.

  • Java Server Faces (JSF) NetBeans 5.5

    Copyright Wilder Lpez M. 11

    Ahora colocamos un nombre y seleccionamos la base de datos, de nombre pondremos dbDemo, y como servidor (local) con esto levantamos la BD instalado en forma local.

    Configuramos el modo de autentificacin de la base de datos puedes probar con las dos opciones autentificacin de Windows o la autentificacin de Sql Server, estas autentificaciones depende de cmo configuraste el SQL Server, en mi caso seleccionar la primera opcin.

    Seleccionamos la base de datos con la que trabajar, aqu seleccionamos la BD Demo.

  • Java Server Faces (JSF) NetBeans 5.5

    Copyright Wilder Lpez M. 12

    Pulsamos clic en Finalizar y con esto ya tenemos creado nuestro DSN de usuario

    Pulse clic en el botn probar origen de datos, si muestra la ventana de resultados de pruebas el mensaje PRUEBAS COMPLETAMENTE CORRECTAMENTE, todo fue exitoso. Pulse aceptar en todas la ventanas abiertas

    Nos vamos al entorno de NetBeans 5.5, a la pestaa Runtime para conectarnos al ODBC que hemos creado. Pulsar clic derecho en el Drriver JDBC-ODBC Bridge y elegimos la opcin Connect Using

  • Java Server Faces (JSF) NetBeans 5.5

    Copyright Wilder Lpez M. 13

    En esta ventana colocamos el nombre del ODBC que creamos anteriormente en el campo Database URL, y pulsamos OK.

    Si logramos conectarnos a la Base de Datos tendremos una ventana con las tablas existentes. Pulse clic derecho sobre cualquier tabla y seleccione la opcin View Data, para mostrar los datos.

  • Java Server Faces (JSF) NetBeans 5.5

    Copyright Wilder Lpez M. 14

    2.3. Creando el la aplicacin Mantenimiento de las tablas Escuela y Facultad con JSF

    1 Nos vamos a Project y pulsamos clic derecho en el proyecto webJSF del sub men seleccionamos New Entity Classes from Database

    Si les presenta un mensaje de que no puede crear clases entity en este Project, debemos subir el nivel del origen de java a level 1.5, tal como se muestra en la figura

    Para solucionar este problema, vamos a pulsar clic derecho sobre el proyecto y seleccionamos la opcin Properties, y cambiamos el Source Level a 1.5, con esto podremos crear una clase de tipo Entity clases desde base de datos.

  • Java Server Faces (JSF) NetBeans 5.5

    Copyright Wilder Lpez M. 15

    Repetimos el paso 1 y seleccionamos la base de datos en la opcin Database Connection, colocaremos la conexin jdbc:odbc:dbDemo que creamos anteriormente; con esto tendremos cargado las tablas que en ella existe, trasladamos la tabla Escuela al lado derecho con el botn Add >, automticamente pasar la tabla Facultad porque se encuentra relacionado, finalmente pulsamos el botn Next >

    Escribimos un paquete llamado demo para agrupar las clases que se van autogenerar, tambin debemos pulsar clic en el botn Create Persistente Unit, en el cuadro de dialogo pulsamos create. Pulse clic en el botn finalizar para terminar

  • Java Server Faces (JSF) NetBeans 5.5

    Copyright Wilder Lpez M. 16

    Con esto tenemos dos clases creados de tipos persistentes, la clase Escuela y la clase Facultad.

    El cdigo fuente de la clase Escuela.java

    Nombre del paquete a

    crearse

  • Java Server Faces (JSF) NetBeans 5.5

    Copyright Wilder Lpez M. 17

    2. Ahora nos toca crear los JSF Pages a partir de las clases creadas, para ello pulsar clic derecho sobre la carpeta Web Pages, seleccionamos del sub men la opcin New JSP Pages from Entity Class

    Seleccionamos las clases de donde se crearn los JSF, pulsando clic en el botn Add All >>, pulsamos Next.

  • Java Server Faces (JSF) NetBeans 5.5

    Copyright Wilder Lpez M. 18

    Nos aseguramos que el paquete sea demo Pulsamos clic en el botn fins.

    Con esto hemos creado todos los JSF y los controladores que nos permitirn gestionar las tablas escuela y facultad, como podrs observar, ahora tenemos dentro de Web Page los paquetes escuela y Facultad, dentro de ellos tenemos los jsps Detail, Edit, List, y New que incluyen en su cdigo sentencias de JSF, a esto lo conocemos como las vistas, del M-V-C. Tambin contamos con dos clases EscuelaController y EscuelaConverter, la primera representa al controlodor del M-V-C, la segunda sirve de enlace entre controladores. Las clases creados en el punto 1 representan al modelo del M-V-C

  • Java Server Faces (JSF) NetBeans 5.5

    Copyright Wilder Lpez M. 19

    Vamos a cambiar los datos que se encuentran en el index.jsp.

    Por estos datos

    Ejecutemos la aplicacin pulsando clic derecho sobre el proyecto y seleccionando la opcin Run Project del men contextual.

  • Java Server Faces (JSF) NetBeans 5.5

    Copyright Wilder Lpez M. 20

    Pulsando clic en el link Mantenimiento de facultad tenemos la lista de facultades con los botones de New, Edit Destroy

    Si seleccionamos la opcin Edit, podremos editar los datos de la fila seleccionada pulsando clic en Save guardaremos los datos, todo esto es administrado por FacultadController.java por medio de los Beans creados.

  • Java Server Faces (JSF) NetBeans 5.5

    Copyright Wilder Lpez M. 21

    Tenemos los datos cambiados y un mensaje enviado por el Controlador

    Lo mismo observamos con mantenimiento de escuela.

  • Java Server Faces (JSF) NetBeans 5.5

    Copyright Wilder Lpez M. 22

    Para crear una nueva escuela pulsamos New Escuela

    Podemos definir la cantidad de registros a mostrar en la lista, entrando a la clase EscuelaController.java, y all cambiamos la variable batchSze = 5;

    Validacin en JSF

    JSF traen validacin que se pueden hacer a campos de ingreso, de tal forma que no tengas que programar la validacin de la misma. Analicemos New.jsp del paquete Facultad.

  • Java Server Faces (JSF) NetBeans 5.5

    Copyright Wilder Lpez M. 23

    Para validar el campo de ingreso de datos sea obligatorio bastar con poner la propiedad required=true. Para validar la longitud del ingreso de un campo tenemos que utilizar la etiqueta

  • Java Server Faces (JSF) NetBeans 5.5

    Copyright Wilder Lpez M. 24

    Observemos ahora el archivo faces-config.xml

    Este fichero es donde configuramos JSF. Es como el pegamento que une modelo, vista y controlador. En este fichero por un lado declaramos los beans que vamos a utilizar para recoger la informacin de los formularios, y por otro lado las reglas de navegacin.

  • Java Server Faces (JSF) NetBeans 5.5

    Copyright Wilder Lpez M. 25

  • Java Server Faces (JSF) NetBeans 5.5

    Copyright Wilder Lpez M. 26

  • Java Server Faces (JSF) NetBeans 5.5

    Copyright Wilder Lpez M. 27

    III. Conclusiones.

    Como habrn notado no tuvimos que trabajar con HttpSession. HttpRequest, como tienen los servlets, pero esto no es necesario en JSF.

    Hemos trabajado generando las cosas a partir de una tabla de BD, y luego metimos mano en el cdigo para darle forma y validaciones, esto es fastidioso para alguno desarrolladores que vienen de Microsoft.

    Existen Entornos que nos permiten trabajar directamente los datos del diseo, tal como lo hace Swing, NetBeans cuenta con el Visual Web Aplicattion, tambin existe el jCreator que tren incluido el Framework JSF.

    Los Frameworks nos ahorran tiempo a la hora de desarrollar una aplicacin WEB, pero debemos comprender tambin que quedamos atados al mismo.

    Es muy importante tener definidos nuestra bases de datos a la hora de desarrollar aplicaciones Web, tambin es importante trabajar en forma nativa con la conexin.

    Queda como parte de Ud. Investigar ms sobre este Frameworks para ir probando su productividad, estoy seguro que los nuevos desarrolladores lo adoptarn sin ningn inconveniente

    En nuestro pas el Framework ms utilizado es el Struts, y migrar a otro demanda muchos recursos econmicos y tiempo, algo que las empresas no estn dispuestos a invertir.

    1Acerca del Autor

    !"# $%&'(

    !)

    *&+'(,- . ,

    !"# /0 1 . 2

    34

    5.*