Академический Документы
Профессиональный Документы
Культура Документы
CRJJ
Dveloppement des composants WEB: Atelier 01 bis : Connexion une base de donnes
Nous allons rajouter ici la connexion une base de donnes MySQL. La servlet tant un processus du ct serveur, elle peut donc facilement accder aux bases de donnes situes sur le ou les serveurs locaux. Cette solution permet de prserver un bon niveau de scurit car seuls les rsultats des requtes sont envoys vers l'extrieur. L'authentification la base de donnes reste sur le rseau local. NB : Il existe des mthodes volues de gestion des connexions une base de donnes utilisant des pools de connexion permettant d'viter la saturation du serveur. Toutefois, nous allons adopter ici une dmarche plus simple et plus directe qui va connecter directement la servlet une base de donnes. Stratgie ne pas utiliser en cas de forte utilisation de la servlet sous peine de saturer le SGBD. Il faut installer Mysql, connecter le JDBC, crer une base de donnes avec une table simple et enfin crer une servlet qui se connecte la base pour afficher le contenu de la table.
4 Cration de la servlet
Nous allons crer une servlet toute simple qui rcupre les enregistrements dans la table personne et les renvoie sous forme de texte. Nous pourrons ainsi visualiser le rsultat dans un navigateur web.
CRJJ
La mthode init() est lance une fois la servlet est active. Ajouter un attribut dans la classe pour le stockage de la connexion : Connection BD; Ecrire le corps suivant pour la mthode init() :
public void init() throws ServletException { try { Class.forName("com.mysql.jdbc.Driver"); } catch(ClassNotFoundException er) { System.err.println("Erreur de chargement du driver" + er); } // Connexion la base de donnes try { BD = DriverManager.getConnection( "jdbc:mysql://localhost/test?autoReconnect=true", "root","iupmiage"); } catch (SQLException ex) { System.err.println("Erreur lors de la connexion " + ex); } }
CRJJ
out.println("<table>"); try{ tmpStatement = (Statement) BD.createStatement (ResultSet.TYPE_SCROLL_INSENSITIVE , ResultSet.CONCUR_UPDATABLE); resultSet = tmpStatement.executeQuery("select * from personne"); out.println("<TR>"); out.println("<TD>CIN</TD>"); out.println("<TD>Nom</TD>"); out.println("<TD>Prnom</TD>"); out.println("</TR>"); while (resultSet.next()){ out.println("<TR>"); out.println("<TD>"); out.println(resultSet.getString("cin")); out.println("</TD>"); out.println("<TD>"); out.println(resultSet.getString("nom")); out.println("</TD>"); out.println("</TR>"); out.println("<TD>"); out.println(resultSet.getString("prenom")); out.println("</TD>"); out.println("</TR>"); } out.println("</table>"); out.println("</body>"); out.println("</html>"); resultSet.close(); tmpStatement.close(); tmpStatement = null; resultSet = null; } catch (java.sql.SQLException ex){ // Pb dans la requte } }
et
testez
l'adresse