Creando una Aplicación J2EE con JSF y BD en

Anuncio
Java Server Faces (JSF)
NetBeans 5.5
Creando una Aplicación J2EE con JSF y
Base de Datos en NetBeans 5.5
Autor: Wilder López Meléndez1
wlopezm@yahoo.com
Fecha: 28 de junio de 2007
I.- Introducción
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 solución que mejor se adapte a nuestra aplicación.
Por lo tanto, los patrones de diseño son soluciones exitosas a problemas comunes. Existen
muchas formas de implementar patrones de diseño. Los detalles de las implementaciones son
llamadas estrategias, es decir soluciones típicas de desarrollo. Hay patrones que abarcan las
distintas etapas del desarrollo; desde el análisis hasta el diseño y desde la arquitectura hasta la
implementación.
Un patrón es una solución comprobada para un problema en un contexto, cuanto más amplio
sea el contexto, más amplio será el campo de aplicación del patrón, en términos de software,
los patrones son esencialmente la destilación de la “sabiduría” obtenida por especialistas sobre
lo que funciona bien a la hora de especificar, diseñar e implementar software.
(GoF, que en español es la pandilla de los cuatro) desde luego que ellos no son los inventores
ni los únicos involucrados, pero ese fue luego de la publicación de ese libro que empezó a
difundirse con más fuerza la idea de patrones de diseño. El grupo de GoF clasificaron los
patrones en 3 grandes categorías basadas en su propósito:
Creacionales: Patrones creacionales tratan con las formas de crear instancias de objetos. El
objetivo de estos patrones es de abstraer el proceso de instanciación y ocultar los detalles de
cómo 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 comunicación e
iteración entre los objetos de un sistema. El propósito de este patrón es reducir el acoplamiento
entre los objetos.
La arquitectura Modelo-Vista-Controlador es un patrón de diseño clásico que es muy usado
en aplicaciones que requieren la habilidad de mantener múltiples vistas del mismo dato; es
decir, se usa para administrar la información y notificar algún cambio en la misma, por lo que su
funcionalidad está dirigida a un propósito común.
Utilizando este tipo de patrones conseguimos: más calidad, mejor mantenibilidad, perder el
miedo a empezar un proyecto desde cero, pero una de las cosas más importantes es la
normalización y estandarización del desarrollo de Software.
En este artículo vamos a ver un framework de desarrollo que sigue el patrón MVC. Los
frameworks son muy útiles ya que nos permiten no tener que reinventar la rueda cada vez. Es
decir el framework no sólo sigue el patrón, sino que me da unas directrices de trabajo, y nos da
gran parte del trabajo ya hecho.
Copyright © Wilder López M.
1
Java Server Faces (JSF)
NetBeans 5.5
JSF (Java Server Faces) es un framework de desarrollo basado en el patrón 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) también es líder de la especificación de JSF.
Vamos a crear una aplicación típica 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 aplicación por más sencilla que parezca sin utilizar un
framework demanda mucho tiempo su realización, obviamente respetando todas las reglas del
Patrón 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 permitirán 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 aplicación JSF
Primero empezaremos definiendo nuestra Base de Datos que será como sigue:
Aquí observamos la relación 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).
Después de descargar el NetBeans 5.5 desde http://www.netbeans.org vamos a crear un
nuevo proyecto
Copyright © Wilder López M.
2
Java Server Faces (JSF)
NetBeans 5.5
Elegimos una aplicación Web (Web Application)
Copyright © Wilder López M.
3
Java Server Faces (JSF)
NetBeans 5.5
Elegimos el nombre el directorio de trabajo del NetBeans, esto para mi es fundamental,
siempre insisto con mis alumnos a prestar atención a ese cuadro de dialogo, por que aquí
defino donde se guardará mi proyecto.
Elegimos soporte para trabajar con el FrameWork JavaServer Faces - JSF
Copyright © Wilder López M.
4
Java Server Faces (JSF)
NetBeans 5.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. Conexión 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
Copyright © Wilder López M.
5
Java Server Faces (JSF)
NetBeans 5.5
Comprobamos si el paquete lib ya se muestra en nuestro proyecto.
Añadimos los .Jar al paquete Libraries, pulsando clic derecho sobre el paquete y seleccionando
la opción Add JAR/Fólder …
Seleccionamos la carpeta donde esta la carpeta lib que copiamos en el párrafo anterior y
empezamos a añadir uno a uno los componentes mbase.jar, mssqlserver.jar, msutil.jar,
sqljdb.jar
Copyright © Wilder López M.
6
Java Server Faces (JSF)
NetBeans 5.5
Finalmente debemos tener en el paquete Libraries todos los componentes añadidos.
Copyright © Wilder López M.
7
Java Server Faces (JSF)
NetBeans 5.5
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
añadiremos 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://<HOST>:<PORT>[;DatabaseName=<DB>]”, en nuestro caso vamos
a utilizar lo siguiente: jdbc:microsoft:sqlserver://localhost:1432;DatabaseName=demo. Usuario y
clave “sa”
Copyright © Wilder López M.
8
Java Server Faces (JSF)
NetBeans 5.5
Cambiamos el HOST, PORT y DB
2.2. Conexión a la Base Datos Por medio del ODBC
También pueden conectarse a la Base de Datos por medio del Windows con ODBC, con esta
opción 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 estarás
preguntando cual de las dos opciones es la ¿más adecuada y la más rápida?. La respuesta
es“, la primera opción”, conectarse por medio de los Drivers que es la forma Nativa del JDBC.
ODBC lo utilizamos con fines académicos, aparte de que esta amarrado al S.O Windows.
Para crear un ODBC debemos entrar al Panel de Control de Windows y seleccionar la opción
Herramientas Administrativas – Orígenes de datos (ODBC)
Copyright © Wilder López M.
9
Java Server Faces (JSF)
NetBeans 5.5
En esta cuadro de dialogo debemos agregar un origen de datos de usuario, pulsando clic en el
botón Agregar.
Seleccionamos el motor de base datos en nuestro caso SQL Server.
Copyright © Wilder López M.
10
Java Server Faces (JSF)
NetBeans 5.5
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 autentificación de la base de datos puedes probar con las dos
opciones autentificación de Windows o la autentificación de Sql Server, estas autentificaciones
depende de cómo configuraste el SQL Server, en mi caso seleccionaré la primera opción.
Seleccionamos la base de datos con la que trabajará, aquí seleccionamos la BD Demo.
Copyright © Wilder López M.
11
Java Server Faces (JSF)
NetBeans 5.5
Pulsamos clic en Finalizar y con esto ya tenemos creado nuestro DSN de usuario
Pulse clic en el botón 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 pestaña Runtime para conectarnos al ODBC que
hemos creado. Pulsar clic derecho en el Drriver JDBC-ODBC Bridge y elegimos la opción
Connect Using…
Copyright © Wilder López M.
12
Java Server Faces (JSF)
NetBeans 5.5
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 opción View Data, para mostrar los
datos.
Copyright © Wilder López M.
13
Java Server Faces (JSF)
NetBeans 5.5
2.3. Creando el la aplicación 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 opción Properties, y cambiamos el Source Level a 1.5, con esto podremos crear una clase
de tipo Entity clases desde base de datos.
Copyright © Wilder López M.
14
Java Server Faces (JSF)
NetBeans 5.5
Repetimos el paso 1 y seleccionamos la base de datos en la opción Database Connection,
colocaremos la conexión 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 botón
Add >, automáticamente pasará la tabla Facultad porque se encuentra relacionado, finalmente
pulsamos el botón Next >
Escribimos un paquete llamado demo para agrupar las clases que se van autogenerar, también
debemos pulsar clic en el botón Create Persistente Unit, en el cuadro de dialogo pulsamos
create. Pulse clic en el botón finalizar para terminar
Copyright © Wilder López M.
15
Java Server Faces (JSF)
NetBeans 5.5
Nombre del
paquete a
crearse
Con esto tenemos dos clases creados de tipos persistentes, la clase Escuela y la clase
Facultad.
El código fuente de la clase Escuela.java
Copyright © Wilder López M.
16
Java Server Faces (JSF)
NetBeans 5.5
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 opción New – JSP
Pages from Entity Class…
Seleccionamos las clases de donde se crearán los JSF, pulsando clic en el botón Add All >>,
pulsamos Next.
Copyright © Wilder López M.
17
Java Server Faces (JSF)
NetBeans 5.5
Nos aseguramos que el paquete sea demo Pulsamos clic en el botón finís.
Con esto hemos creado todos los JSF y los controladores que nos permitirán gestionar las
tablas escuela y facultad, como podrás observar, ahora tenemos dentro de Web Page los
paquetes escuela y Facultad, dentro de ellos tenemos los jsp’s Detail, Edit, List, y New que
incluyen en su código sentencias de JSF, a esto lo conocemos como las vistas, del M-V-C.
También 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
Copyright © Wilder López M.
18
Java Server Faces (JSF)
NetBeans 5.5
Vamos a cambiar los datos que se encuentran en el index.jsp.
Por estos datos
Ejecutemos la aplicación pulsando clic derecho sobre el proyecto y seleccionando la opción
Run Project del menú contextual.
Copyright © Wilder López M.
19
Java Server Faces (JSF)
NetBeans 5.5
Pulsando clic en el link Mantenimiento de facultad tenemos la lista de facultades con los
botones de New, Edit Destroy
Si seleccionamos la opción 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.
Copyright © Wilder López M.
20
Java Server Faces (JSF)
NetBeans 5.5
Tenemos los datos cambiados y un mensaje enviado por el Controlador
Lo mismo observamos con mantenimiento de escuela.
Copyright © Wilder López M.
21
Java Server Faces (JSF)
NetBeans 5.5
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;
Validación en JSF
JSF traen validación que se pueden hacer a campos de ingreso, de tal forma que no tengas
que programar la validación de la misma. Analicemos New.jsp del paquete Facultad.
Copyright © Wilder López M.
22
Java Server Faces (JSF)
NetBeans 5.5
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 <f:validateLength …
Para validar un rango de ingreso de datos, como por ejemplo [0-1500]
Con esto también estamos validando que el dato ingresado sea de tipo Entero.
Copyright © Wilder López M.
23
Java Server Faces (JSF)
NetBeans 5.5
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 información de los formularios, y por otro lado las reglas de navegación.
Copyright © Wilder López M.
24
Java Server Faces (JSF)
Copyright © Wilder López M.
NetBeans 5.5
25
Java Server Faces (JSF)
Copyright © Wilder López M.
NetBeans 5.5
26
Java Server Faces (JSF)
NetBeans 5.5
III. Conclusiones.
Como habrán 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
código 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 diseño, tal como lo hace
Swing, NetBeans cuenta con el Visual Web Aplicattion, también existe el jCreator que tren
incluido el Framework JSF.
Los Frameworks nos ahorran tiempo a la hora de desarrollar una aplicación WEB, pero
debemos comprender también que quedamos atados al mismo.
Es muy importante tener definidos nuestra bases de datos a la hora de desarrollar aplicaciones
Web, también es importante trabajar en forma nativa con la conexión.
Queda como parte de Ud. Investigar más sobre este Frameworks para ir probando su
productividad, estoy seguro que los nuevos desarrolladores lo adoptarán sin ningún
inconveniente
En nuestro país el Framework más utilizado es el Struts, y migrar a otro demanda muchos
recursos económicos y tiempo, algo que las empresas no están dispuestos a invertir.
1
Acerca del Autor
•
•
•
•
•
!
$
*
.
%& '
&+ '
/0 1
3 4 5. *
Copyright © Wilder López M.
(
(
" #
!
,
,
)
!
" #
.
2
27
Descargar