Sie sind auf Seite 1von 7

Conectar Base de Datos MySQL con JSF El primer paso a realizar es crear la referencia JNDI para el origen de datos

en el servidor local TomCat. Comentar que antes, tenemos que crear la Base de Datos Wiki de manera local en MySQL, y crear las tablas necesarias, que en el caso de nuestra aplicacin, sern una tabla para trabajar con los usuarios y otra tabla para trabajar con las pginas, por lo menos, de momento. Para esto, tenemos que editar el fichero <local-tomcat-installation>/conf/context.xml. Estamos trabajando con el servidor local Tomcat integrado en MyEclipse con lo cual la ruta completa en mi caso es la siguiente: C:\Documents and Settings\Administrador\Escritorio\ProyectoFinal\.metadata\.plugins\com.genuitec.ecli pse.easie.tomcat.myeclipse\tomcat\conf\conf.xml. El fichero lo he editado de la siguiente forma: <Resource name="datasource" auth="Container" type="javax.sql.DataSource" driverClassName="org.gjt.mm.mysql.Driver" url="jdbc:mysql://localhost:3306/wiki" username="root" password="miclave" maxActive="20" maxIdle="10" maxWait="-1"/> Creando una clase de ayuda para acceder a la base de datos El siguiente paso ser crear una clase de ayuda que nos permita acceder a la base de datos, y realizar una serie de operaciones. Esta clase ser usada por los beans JSF para mostrar datos en un componente DataTable JSF. Lo que vamos a hacer en este ejemplo es crear dos nuevos usuarios en nuestra base de datos y mostrarlos en una pequea tabla. Para ello creamos una nueva clase, a la cual llamaremos AccesoDatos, que va a contener el siguiente cdigo: import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList; import java.util.List; import javax.naming.Context; import javax.naming.InitialContext; import javax.naming.NamingException; import javax.sql.DataSource;

public class AccesoDatos { private static Connection createConnection() throws NamingException,SQLException { Context ctx = new InitialContext(); if (ctx == null) { throw new NamingException("No initial context"); } Context envContext = (Context) ctx.lookup("java:/comp/env"); if (envContext == null) { throw new NamingException("No environment context"); } DataSource ds = (DataSource) envContext.lookup("datasource"); if (ds == null) { throw new NamingException("No data source"); } Connection conn = ds.getConnection(); if (conn == null) { throw new SQLException("No database connection"); } return conn; } public static void PruebaInsercion() { Connection connection; try { connection = createConnection(); String insertSql="INSERT INTO ejemplowiki values (2, \"Sonia\")"; executeUpdate(connection, insertSql); insertSql = "INSERT INTO ejemplowiki values (3, \"Jose\")"; executeUpdate(connection, insertSql); } catch (NamingException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } } public static List<Usuarios> getUsuarios() { Statement stmt = null; List<Usuarios> usuarios = new ArrayList<Usuarios>(); try {

String sql = "SELECT * FROM ejemplowiki"; Connection connection = createConnection(); stmt = connection.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE); stmt.setQueryTimeout(30); ResultSet resultSet = stmt.executeQuery(sql); while (resultSet.next()) { int id = resultSet.getInt(1); String nom = resultSet.getString(2); usuarios.add(new Usuarios(id, nom)); } } catch (SQLException exc) { try { if (stmt != null) { stmt.close(); } } catch (SQLException e) { e.printStackTrace(); } } catch (NamingException e) { e.printStackTrace(); } return usuarios; } private static void executeUpdate(Connection connection, String sql) { Statement stmt = null; try { stmt = connection.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE); stmt.setQueryTimeout(30); stmt.executeUpdate(sql); } catch (SQLException exc) { try { if (stmt != null) { stmt.close(); } } catch (SQLException e) { e.printStackTrace(); } } } }

Creando los backing beans JSF Son el modelo para los components UI JSF en la pgina JSP. En nuestro ejemplo vamos a necesitar dos beans: Usuario: corresponde a un registro de la tabla Usuario de la base de datos ResultBean: mantiene la lista de usuarios que obtenemos al consultar la base de datos.

Para crear los backing beans: 1. Doble-click en fichero faces-config.xml y seleccionamos ManagedBean (parte de la derecha). 2. Clickeamos Add. Creamos nueva clase en Java. 3. Introducimos el nombre de la clase y seleccionamos session en la visiblidad del managed bean.

Ahora nos vamos para nuestra clase creada y aadimos sus atributos (en el caso de Usuario, identificador y nombre) private int ident; private String nombre; Pulsamos en el botn derecho y en la siguiente imagen vemos que en la opcin de Source, podemos insertar los mtodos get-set y constructores:

El cdigo correspondiente a ResultBean permite recuperar la lista de usuarios de la BD. import java.util.List; public class ResultBean { private List<Usuarios> list = null; public ResultBean(){ AccesoDatos.PruebaInsercion(); } public List<Usuarios> getList() { // get the customer list lazily. if (list == null) {

list = AccesoDatos.getUsuarios(); } return list; } public void setList(List<Usuarios> newlist) { this.list = newlist; } } Aadir un componente JSF DataTable al JSP El siguiente paso es aadir un JSF Data Table a una pgina JSP y emparejarlo a ResultBean. El DataTable recoger la lista de Usuarios del ResultBean y lo mostrar en un formulario tabular. Abre el fichero JSP y aade el siguiente cdigo entre las etiquetas <f:view> y </f:view> <h:dataTable id="table" rows="20" value="#{ResultBean.list}" var="user"> <h:column> <f:facet name="header"> <h:outputText value="Identificador" /> </f:facet> <h:outputText id="id" value="#{user.ident}" /> </h:column> <h:column> <f:facet name="header"> <h:outputText value="Nombre" /> </f:facet> <h:outputText id="first" value="#{user.nombre}" /> </h:column> </h:dataTable> Si ejecutamos la aplicacin obtenemos el siguiente resultado

Das könnte Ihnen auch gefallen