Академический Документы
Профессиональный Документы
Культура Документы
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