martes, junio 07, 2011

Creando una aplicacion con JSF RichFaces parte I

Esta ocacion haremos una aplicacion con jsf, utilizando el framework RichFaces, iremos desde la configuracion basica, manejo de sessiones, interna internacionalizacion, configuracion de log4j (que ya vimos), integracion con Spring, Hibernate.

por lo tanto sera una serie de post ligueramente extensa :)

En esta primer post, solo tomare la configuracion basica de un proyecto con jsf y su integracion con rich

1.- Primero hay que descargar las siguientes librerias
commons-beanutils
commons-collections
commons-digester
commons-logging

richfaces-api-3.3.3
richfaces-impl-3.3.3
richfaces-ui-3.3.3
2.- Lo siguiente si utilizas MyEclipce, NetBeans, es lo mismo, cambia ligeramente para Eclipce (Faltarian mas librerias)
/**
Para MyEclipce

1.- Crear un proyecto web
2.- Agregar capacidades para JSF

Para NetBeans

1.- Crear un proyecto JSF simple, (no crear un proyecto para woodstock o icefaces)

Agregarles las librerias antes descargadas
*/
3.- Viendo la estructura basica de un proyecto jsf
/**
Una ves creado nuestro proyecto podemos ver 2 caracteristicas diferentes a un proyecto web normal

El primero es que ha cambiado nuestro web.xml

El segundo, se ha creado un archivo faces-config.xml a la altura de web.xml
*/
4.- Analizando al faces-config





5.- Modificando el web.xml




 
  javax.faces.STATE_SAVING_METHOD
  server
 


 
  org.richfaces.SKIN
  blueSky
 


 
  org.richfaces.LoadScriptStrategy
  ALL
 


 
  org.richfaces.LoadStyleStrategy
  ALL
 


 
  org.richfaces.CONTROL_SKINNING
  enable
 


 
  ajax4jsf
  org.ajax4jsf.Filter
 

 
  ajax4jsf
  Faces Servlet
  REQUEST
  FORWARD
  INCLUDE
 



 
  Faces Servlet
  javax.faces.webapp.FacesServlet
  0
 


 
  Faces Servlet
  /faces/*
 


 
  faces/index.jsp
 


Hasta aqui solo tenemos la configuracion basica para ejecutar rich faces, en la siguiente entrada haremos nuestro primer hola mundo . . .

lunes, junio 06, 2011

CONEXION A UNA BD ORACLE

En esta ocacion veremos el ya choteadisimo ejemplo de una conexion a bd, en este caso utilizare oracle, y el metodo de conexion thin

1.- Descargar el jar de conexion a oracle (en mi caso utilizare ojdbc14.jar)

2.- Crear el conjunto de paquetes a utilizar
com.conexion.dao
com.conexion.impl
com.conexion.interfaz
com.conexion.main

3.- Creamos la interfaz de conexion
package com.conexion.interfaz;

import java.sql.Connection;

public interface ConexionI {
 public boolean conectar();
 public boolean desconectar();
 public Connection getConexion();
 public String getSentenciaSQL();
 public void setSentenciaSQL(String sentenciaSQL);
}
4.- Creamos la clase que proveera los datos de conexion
package com.conexion.impl;

public class DatosConexion {
 private String usr;
 private String pass;
 private String server;
 private String tipoConexion;
 
 public DatosConexion(){
  setTipoConexion("jdbc:oracle:thin:");
  setServer("@127.0.0.1:1521:miServer");
  setPass("miPass");
  setUsr("miUsr");
 }

/*
 Los Metodos get y set
*/
}
5.- Creamos la implementacion de la interfaz
package com.conexion.impl;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

import com.conexion.interfaz.ConexionI;

public class ConexionOracle implements ConexionI {

 private Connection conexion;
 private DatosConexion datos;
 private String sentenciaSQL;

 public boolean conectar() {
  try {
   datos = new DatosConexion();
   DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
   setConexion(DriverManager.getConnection(getDatos().getTipoConexion()
     + getDatos().getServer(), getDatos().getUsr(), getDatos()
     .getPass()));
   return true;
  } catch (SQLException e) {
   System.out.println("Error al Conectar a la bd ...");   
   return false;
  }
 }

 public boolean desconectar() {
  try {
   if (getConexion() != null) {
    if (!getConexion().isClosed()) {
     getConexion().close();
    }
   }
   return true;
  } catch (SQLException e) {
   System.out.println("Error al Desconectar a la bd ...");
   return false;
  }
 }

/*
 Los Metodos get y set
*/

}
6.- Creamos la clase DAO de persona
package com.conexion.dao;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import com.conexion.impl.ConexionOracle;
import com.conexion.interfaz.ConexionI;

public class PersonaDAO {
 public void consultaDatos() {
  try {
   ConexionI conexionBD = new ConexionOracle();
   PreparedStatement ps;
   ResultSet rs;
   if (conexionBD.conectar()) {
    System.out.println("Conectado ... ");

    conexionBD
      .setSentenciaSQL("select ID_PERSONA, NOMBRE from PERSONAS order by ID_PERSONA");

    ps = conexionBD.getConexion().prepareStatement(
      conexionBD.getSentenciaSQL());

    rs = ps.executeQuery();

    while (rs.next()) {
     System.out.print(" ID: " + rs.getInt("ID_PERSONA"));
     System.out.println(" NOMBRE: " + rs.getString("NOMBRE "));
    }

    if (conexionBD.desconectar()) {
     System.out.println("Desconectado ... ");
    }
   }
  } catch (SQLException e) {
   System.out.println("Error en la sentencia sql");
  }
 }
}
7.- Realizamos nuestro Test
package com.conexion.main;

import com.conexion.dao.PersonaDAO;

public class Test {
 public static void main(String[] args) {
  PersonaDAO persona = new PersonaDAO();
  persona.consultaDatos();
 }
}
Como se puede observar, realizar una conexion a bd, es de lo mas facil