Exemple d'intégration JSF 2.0 + JDBC
Voici un guide pour vous montrer comment intégrer JSF 2.0 à une base de données via JDBC. Dans cet exemple, nous utilisons la base de données MySQL et le conteneur Web Tomcat.
Structure de répertoire de cet exemple

1. Structure de la table
Créez une table «customer» et insérez cinq enregistrements factices. Plus tard, affichez-le via JSFh:dataTable.
Commandes SQL
DROP TABLE IF EXISTS `exampledb`.`customer`; CREATE TABLE `exampledb`.`customer` ( `CUSTOMER_ID` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, `NAME` varchar(45) NOT NULL, `ADDRESS` varchar(255) NOT NULL, `CREATED_DATE` datetime NOT NULL, PRIMARY KEY (`CUSTOMER_ID`) ) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=utf8; insert into exampledb.customer(customer_id, name, address, created_date) values(1, 'example1', 'address1', now()); insert into exampledb.customer(customer_id, name, address, created_date) values(2, 'example2', 'address2', now()); insert into exampledb.customer(customer_id, name, address, created_date) values(3, 'example3', 'address3', now()); insert into exampledb.customer(customer_id, name, address, created_date) values(4, 'example4', 'address4', now()); insert into exampledb.customer(customer_id, name, address, created_date) values(5, 'example5', 'address5', now());
2. MySQL DataSource
Configurez une source de données MySQL nommée «jdbc/exampledb», suivez cet article -How to configure MySQL DataSource in Tomcat 6
3. Classe de modèle
Créez une classe de modèle «Customer» pour stocker les enregistrements de la table.
Fichier: Customer.java
package com.example.customer.model;
import java.util.Date;
public class Customer{
public long customerID;
public String name;
public String address;
public Date created_date;
//getter and setter methods
}
4. Exemple JDBC
Un bean géré JSF 2.0, injecte la source de données «jdbc/exampledb» via@Resource et utilise l'API JDBC normale pour récupérer tous les enregistrements client de la base de données et les stocker dans une liste.
Fichier: CustomerBean.java
package com.example;
import java.io.Serializable;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.Resource;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;
import com.example.customer.model.Customer;
@ManagedBean(name="customer")
@SessionScoped
public class CustomerBean implements Serializable{
//resource injection
@Resource(name="jdbc/exampledb")
private DataSource ds;
//if resource injection is not support, you still can get it manually.
/*public CustomerBean(){
try {
Context ctx = new InitialContext();
ds = (DataSource)ctx.lookup("java:comp/env/jdbc/exampledb");
} catch (NamingException e) {
e.printStackTrace();
}
}*/
//connect to DB and get customer list
public List getCustomerList() throws SQLException{
if(ds==null)
throw new SQLException("Can't get data source");
//get database connection
Connection con = ds.getConnection();
if(con==null)
throw new SQLException("Can't get database connection");
PreparedStatement ps
= con.prepareStatement(
"select customer_id, name, address, created_date from customer");
//get customer data from database
ResultSet result = ps.executeQuery();
List list = new ArrayList();
while(result.next()){
Customer cust = new Customer();
cust.setCustomerID(result.getLong("customer_id"));
cust.setName(result.getString("name"));
cust.setAddress(result.getString("address"));
cust.setCreated_date(result.getDate("created_date"));
//store all data into a List
list.add(cust);
}
return list;
}
}
5. JSF Page dataTable
Une page xhtml JSF 2.0 utiliseh:dataTable pour afficher tous les enregistrements client au format de mise en page de table.
JSF 2.0 + JDBC Example
Customer ID
#{c.customerID}
Name
#{c.name}
Address
#{c.address}
Created Date
#{c.created_date}
6. Demo
Exécutez-le, voir la sortie

Télécharger le code source
Téléchargez-le -JSF-2-JDBC-Integration-Example.zip (12 Ko)