Вы находитесь на странице: 1из 3

ISTA NTIC SAFI

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.

1 Installer MySQL 2 Installer le jdbc


Le Java Data Base Connectivity pour MySQL s'appelle Copier le .jar dans le rpertoire TOMCAT_HOME\common\lib. Cela permettra vos servlets d'utiliser les classes du package pour se connecter MySQL

3 Cration d'une table 'personne' et ajout d'enregistrements


Personne(cin varchar(10), nom varchar(50), prenom varchar(50)) Crer quelques enregistrements

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.

4.1 Cration de la classe ServletBD


Nous restons toujours dans le mme projet. Repasser dans la perspective java. Crer une nouvelle Servlet portant le nom : SevletBD 4.2 Connexion la BD Une servlet est charge soit au lancement du serveur Tomcat soit lors de sa premire utilisation et reste charge en mmoire. Dans ces deux cas, il suffit de se connecter une fois la base lors de ce chargement puis de se dconnecter au moment du dchargement de la servlet. Pour cela, nous allons utiliser les mthodes init et destroy. Une fois la connexion obtenue, tous les appels la servlet utiliseront cette connexion.

ISTA NTIC SAFI

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); } }

4.3 Destruction de la connexion


La mthode destroy() est appele la fin du cycle de vie de la servlet. Ecrire le corps suivant :
public void destroy() { try { BD.close(); } catch (SQLException sqle) { System.err.println("Erreur SQL "+sqle); } }

4.4 Affichage du contenu d'une table


Ecrivons maintenant le contenu de la mthode doGet()
protected void doGet(HttpServletRequest arg0, HttpServletResponse arg1) throws ServletException, IOException{ Statement tmpStatement = null; ResultSet resultSet = null; PrintWriter out=null; arg1.setContentType("text/html"); out = arg1.getWriter(); out.println("<html>"); out.println("<head><title> Test servlet avec base de donnes</title></head>"); out.println("<body>"); out.println("Contenu de la table personne <BR>");

ISTA NTIC SAFI

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 } }

5 Mappage de la servlet 6 Excution de la servlet


Lancer Tomcat Dmarrer votre navigateur http://localhost:8080/nomProjet/ServletBD

et

testez

l'adresse

Вам также может понравиться