jueves, 17 de mayo de 2012

Login en JSF Y Mysql

Bien luego de una primera vista a esta tecnologia haremos un ejemplo con una base de datos en Mysql Usando JDBC Directo sin usar ningun ORM.

No entrare en detalle como funciona JDBC en java ya que eso esta en post anteriores los cuales se trabajaba con JSP y que es lo mismo solo que aca lo trabajaremos desde una clase java y no desde un JSP que mesclaba diseño y operaciones en fin un desorden.

Seguiremos con el Ejemplo Anterior solo que le haremos unos pequeños agregados como el driver de Mysql hay agregarlo a nuestras librerias y crear una clase conexion.

Esta clase sera la encargada de conectarnos al servidor de base de datos es la que tendremos que instanciar en nuestro Bean.

Lo primero que haremos es validar los dos InputText del Login anterior la validacion en JSF es mas accesible ya que lo trae nativo el lenguaje podemos usar validadores comunes como que sea requerido y que muestre un conjunto de mensajes o advertencias tambien trae los que son los Converter que son muy utiles para convertir datos que son enviados desde la vista.Pero eso lo tienen que leer esta en el manual de la entrada anterior.

 En nuestro caso solo es necesario que no vallan vacios los campos y muestre las advertencias respectivas con la propiedad required igual a true y el mensaje a mostrar en pantalla que es el requiredMessage.
Ya cuando tenemos validado nuestra vista tenemos que agregar una propiedad privada tipo String a nuestro bean con el nombre tipoUsuario con sus respectivos get y set que sera le encargada de almacenar el tipo de usuario registrado.

Luego agregamos una nueva regla de navegacion en nuestro facesConfig el cual tendra la pagina primaria sera Principal y la pagina resultante sera Index cuando nuestro metodo devuelva cerrar.
Luego en nuestra pagina Principal agregaremos las siguientes lineas las cuales es la informacion del usuario y el boton de cerrar sesion que debera de borrar el objeto en sesion creado.
Si vemos es el mismo LoginBean utilizado en en el login solo que desde otra vista lo que hara aca es luego de que pase correctamente por el login el objeto se guarda en sesion y se podra acceder en cualquier vista y mostrara la informacion que se recogio en el login.

Ahora creamos los metodos que nos hacen falta uno el login que va hacia la base de datos y el otro de cerrar la sesion de usuario.

Ya teniamos un metodo login solo creamos uno privado el cual se conectara a la base de datos y ejecutara la consulta(la consulta no la explicare)si encontro el usuario lo recorrera y llenara el tipo de usuario sino retornara false.
El metodo cerrar sesion usaremos el contexto de java server faces deben investigar para que se usa y que es porque se usara bastante,lo unico que hago aca es obtener el contexto externo para tener acceso al objeto HttpSession y se realiza el casteo ya que el faces context regresa un tipo object.Luego solo hacemos un removed del objeto en sesion que tiene el nombre del bean declarado en el faces config.

Bien ya tenemos listo nuestro Login lo probamos logeandonos con las credenciales correctas y veremos esta pantalla.
La informacion del usuario si presionamos el boton de cerrar sesion destruira el objeto en sesion y nos llevara al login.Eso es todo aca quedan el proyecto esta en Netbeans.

Descargar Achivo.

Mas adelante veremos  hibernate a nivel practico y luego los integraremos a JSF.Espero que sea de mucho conocimiento.

comenten no sean bayuncos.

martes, 8 de mayo de 2012

Java Server Faces Primeros Pasos

Bueno ahora en la actualidad bueno de hace ratos se viene insistiendo en usar Framework de trabajo los cuales nos faciliten el desarrollo de algunos aspectos que no son tan criticos y nos centremos en lo que importa en un sistema.

JavaServer Faces (JSF) es una tecnología y framework para aplicaciones Java basadas en web que simplifica el desarrollo de interfaces de usuario en aplicaciones Java EE. JSF usa JavaServer Pages (JSP) como la tecnología que permite hacer el despliegue de las páginas.

JSF incluye:
  • Un conjunto de APIs para representar componentes de una interfaz de usuario y administrar su estado, manejar eventos, validar entrada, definir un esquema de navegación de las páginas y dar soporte para internacionalización y accesibilidad.
  • Un conjunto por defecto de componentes para la interfaz de usuario.
  • Dos bibliotecas de etiquetas personalizadas para JavaServer Pages que permiten expresar una interfaz JavaServer Faces dentro de una página JSP.
  • Un modelo de eventos en el lado del servidor.
  • Administración de estados.
  • Beans administrados.
Objetivos de Java Server faces
  • Estos objetivos de diseño representan el foco de desarrollo de JSF:
  • Definir un conjunto simple de clases base de Java para componentes de la interfaz de usuario, estado de los componentes y eventos de entrada. Estas clases tratarán los aspectos del ciclo de vida de la interfaz de usuario, controlando el estado de un componente durante el ciclo de vida de su página.
  • Proporcionar un conjunto de componentes para la interfaz de usuario, incluyendo los elementos estándares de HTML para representar un formulario. Estos componentes se obtendrán de un conjunto básico de clases base que se pueden utilizar para definir componentes nuevos.
  • Proporcionar un modelo de JavaBeans para enviar eventos desde los controles de la interfaz de usuario del lado del cliente a la aplicación del servidor.
  • Definir APIs para la validación de entrada, incluyendo soporte para la validación en el lado del cliente.
  • Especificar un modelo para la internacionalización y localización de la interfaz de usuario.
  • Automatizar la generación de salidas apropiadas para el objetivo del cliente, teniendo en cuenta todos los datos de configuración disponibles del cliente, como versión del navegador...
La version actual es la 2.1.

Para Trabajar con JSF lo puedes hacer en Netbeans configurando un servidor o algun contenedor como el Tomcat para desplegar aplicaciones JSF,En eclipse yo recomiendo añadir la extension JbossTools el cual trae una opcion para generar un proyecto JSF y correrlo en Algun Servidor Jboss instalado,En JDeveloper hay que configurar el WebLogic que trae interno el IDE, para ejecutar la aplicacion este ultimo trae un diseñador visual.

La forma mas facil es en Netbeans ya que solo nos bajamos la version full y ya trae la caracteristica para trabajar,En el Ejemplo hago caso omiso a que ya te bajaste el IDE,ya configuraste el tomcat o cualquier otro,y estas listo para crear un proyecto web JSF.

Antes de empezar el pequeño tutorial tienes que haber usado netbeans para que no te perdas en los pasos.

Lo primero que haremos es un proyecto web nuevo como lo vemos en la imagen.
Le ponemos un nombre al proyecto:
Luego le ponemos a que servidor estara ejecutandose antes de eso debemos de configurar el tomcat hay una entrada en el blog que explica como paso a paso.
En la siguiente pantalla seleccionamos que queremos trabajarlo con JSF con las librerias 2.1 que son las mas recientes las demas pestañas no la tocamos lo dejamos por default y presionamos terminar.
Ya creado el proyecto vemos en la imagen que explica las partes del proyecto cada una tiene una funcion especifica y fundamental de existir.Por experiencia la carpeta que mas tocaremos es WEB-INF aca tendremos que tener nuestras imagenes en dado caso usemos las librerias externas que no las contiene el IDE aca deben de ir.

Nos colocamos en la carpeta WEB-INF y presionamos click derecho y seleccionamos nuevo y nos saldra esta pantalla.

Y seleccionamos del panel izquiedo java server faces y del derecho jsf configuration.
le dejamos por default el nombre ya que solo abra uno pero que es esto que acabamos de crear.

Es el archivo de Configuracion de JSF como su nombre lo indica aca iran todos los beans las vistas y los casos de navegacion para nuestra aplicacion.

Luego de estos en donde tienen que ir nuestras clases java creamos un paquete y una clase con nombre BeanLogin como lo vemos en la imagen.

Un bean en JSF es el que comunicara la vista de nuestra aplicacion con nuestra logica de negocio lo cual sigue el patron de diseño MVC para un mejor desarrollo y distribucion de las capas de la aplicacion.

Lo siguiente que tenemos que hacer es metodos get y set para la propiedad de usuario tipo String y pass como lo vemos en la imagen.

Luego tenemos que abrir el faces config y editar su codigo para poder agregar un managed bean el cual nos ayudara a comunicar la vista(pagina XHTML,JSP) con la logica de negocio(tus clases Java).


Damos clik derecho sobre el archivo como lo vemos en la imagen y nos saldra un menu el cual seleccionaremos managed bean.Y nos saldra la siguiente pantalla.

Aca le ponemos un nombre al bean en mi caso LoginBean en la opcion de bean class presionamos el boton señalado en la imagen para que buscar la clase que anteriormente habiamos creado,luego de eso cambiamos el estado del bean a session porque lo necesitaremos en cada cliente,los scopes son el ambito del bean,session quiere decir que estara creado por cada cliente y no se destruira hasta que nosotros lo indiquemos,el aplication esta presente en todo el sistema en general, y request es el que solo se crea en una peticion luego desaparece.

Luego de esto abrimos nuestro XHTML y ponemos el siguiente codigo que se muestra en la imagen:
Esto son etiquetas JSF mescladas con html normal.si vemos en la propiedad value del inputText  enlazo mi bean.propiedad con el objeto de la vista asi cuando se haga una peticion a un metodo nosotros obtendremos los valores que en inputText digitaron y en caso de asignar informacion desde el servidor a la vista.Por medio de la propiedad que declaramos en el bean.Para llamar un metodo desde un boton podemos usar la propiedad Action el cual nos pedira el nombre del bean y el metodo (solo el nombre).

Luego de eso nos vamos a nuestro bean para crear el metodo login:
Un metodo que retorne un String lo siguiente es crear una nueva pagina XHTML que se llame principal que sera la que se muestre cuando el login sea correcto y ponemos el siguiente codigo en la nueva pagina.
Regresamos a nuestro faces config para crear una nueva regla de navegacion que nos servira para redireccionar entre paginas cuando haya un metodo de por medio.
Y nos saldra un menu el cual tenemos que indicar el origen de la nueva regla.
Otra vez presionamos clik derecho para crear un nuevo caso de navegacion.
Y nos saldra un menu el cual tenemos que indicar que regresara la pagina y que hara si eso se cumple.
Acordemonos que en el metodo regresamos correcto por eso el caso de navegacion retornara correcto.En dado caso se cumpla se mostrara la pagina principal,cuando no sea correcto tenemos que crear otro caso de navegacion en este caso cuando la pagina retorno incorrecto.
Y listo ya esta listo nuestro Ejemplo cuando no sea el usuario correcto se quedara en la misma pagina si es correcto se mostrara la pagina principal.
Presionamos Entrar y veremos la pagina principal.
Y eso es todo para una pequeña introduccion a algo que es muy potente y bonito de manejar ahora ya pueden leer el manual para hacer cosas mas complicadas.
Manual JSF

Mas adelante veremos cosas mas interesantes Comenten no sean Bayuncos