CONFIGURATION TOMCAT & MYSQL & SERVLET SOUS ECLIPSE & JSP Réalisé par : H.zinsou Année : 2012
SOMMAIRE Sommaire... 2 PRE-REQUIS... 3 Déclaration de TOMCAT sous Eclipse... 3 Mise en place dans eclipse du connector... 7 TOMCAT & MYSQL... 10 MYSQL... 11 Servlets... 15 Servlets (sans JSP)... 15 Création d une servlet sous eclipse... 15 Lancement d une servlet... 18 Servlet : Insérer une image... 19 Servlet Connexion Base de données... 22 Servlet date dynamique-heure dynamique... 25 Servlet Formulaire... 26 Servlets (avec JSP)... 30 Page 2 sur 30
PRE-REQUIS - Tomcat 6.0 installé - Pilote MySql (mysql-connector) ou autres pilotes de base de données (oracle ) - Eclipse JEE. - WampServer 2.0 Lien de téléchargement de eclipse : http://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/indigo/sr1/eclips e-jee-indigo-sr1- win32.zip&url=http://eclipse.ialto.com/technology/epp/downloads/release/indigo/sr1/eclipse-jee-indigo-sr1- win32.zip&mirror_id=514 Lien de téléchargement de MySql (pilote) : http://dev.mysql.com/get/downloads/connector-odbc/5.1/mysql-connector-odbc-noinstall-5.1.9- win32.zip/from/http://mirrors.ircam.fr/pub/mysql/ Lien de téléchargement Tomcat : http://mirror.ibcp.fr/pub/apache/tomcat/tomcat-6/v6.0.35/bin/apache-tomcat-6.0.35.exe Lien de téléchargement WampServer : http://sourceforge.net/projects/wampserver/files/wampserver%202/wampserver%202.2/wampserver2.2ap1-x32.exe/download Installer eclipse (dé-zip) à la racine. Puis WampServer. Ainsi que Tomcat. DECLARATION DE TOMCAT SOUS ECLIPSE Ouvrir Eclipse (c:\eclipse\eclispe.exe). Puis cliquez sur l onglet Window et sur Preferences. Page 3 sur 30
Développer Server à gauche de la fenêtre puis cliquez sur Runtime Environments et Cliquez sur Add Choisir la version de TOMCAT (ici 6) Page 4 sur 30
Cliquez sur le bouton Browse (on va cherche le répertoire de TOMCAT (C:\Program Files\Apache Software Foundation\Tomcat 6.0)). Puis finish. Résultat : Page 5 sur 30
Une dernière configuration reste à effectuer. C est la plus simple. Il suffit de choisir sous qu elle navigateur va se lancer les servlets. Pour cela cliquer sur Windows Web Browser Choix du navigateur Problème courant : L onglet Web Browser n apparait pas. Vérifier que sur votre droite dans eclipse que vous soyez sous Java EE et non Java ou autres Exemple : Cliquer sur >> Résultat : Choisissez Java EE Page 6 sur 30
MISE EN PLACE DANS ECLIPSE DU CONNECTOR L'opération étant effectuée il faut se rendre sur le logiciel eclipse. Créer un projet Java simple (File New Java Project). Ensuite Click droit sur le projet auquel nous voulons insérer le pilote. Puis Properties. Capture d écran : Page 7 sur 30
Cette Fenêtre doit apparaître : Cliquer sur Java Build Path. Sélectionner l onglet Librairies. Cliquer sur Add External JARs Page 8 sur 30
Choisir le fichier mysql-connector-java-5.1.18-bin.jar qui se trouve sur : (C:\Eclipse\mysql-connector-java-5.1.18\mysql-connector-java-5.1.18-bin.jar) Puis Cliquer sur Ouvrir Résultat : Le connector mysql est maintenant en fonctionnel pour qu une connexion à une base de données soit réalisée. Page 9 sur 30
TOMCAT & MYSQL Afin que TOMCAT ait connaissance de MYSQL il lui faut le déclarer. Pour cela se rendre dans le répertoire du mysql-connector et prendre le.jar (mysql-connector-java-5.1.18-bin.jar). Copier ce.jar et le coller dans (C:\Program Files\Apache Software Foundation\Tomcat 6.0\lib) Page 10 sur 30
Redémarrer ECLIPSE. MYSQL Après l installation de WampServer il faut démarrer wampserver (C:\wamp\wampmanager.exe). Ensuite ouvrir le navigateur Web et saisir dans la barre url (http://127.0.0.1/phpmyadmin) Cliquer sur le premier onglet Base de données. Page 11 sur 30
Remplir le champ par le nom de la base puis Créer. Page 12 sur 30
Puis cliquer à gauche sur le nom de votre base.gestion_agenda Cliquer sur l onglet Importer et choisir le fichier agenda.sql. Page 13 sur 30
Résultat : Page 14 sur 30
SERVLETS SERVLETS (SANS JSP) Les servlets s exécute coté serveur alors que les applets coté client. Création d une servlet sous eclipse Cliquez sur File New Dynamic Web Project Choisir un nom de projet et cliquer sur Finish (A noter que le serveur Tomcat et choisit). Page 15 sur 30
Ensuite cliquer sur File New Servlet OU à la racine de votre projet et click Droit new servlet Ensuite donner à votre servlet un nom (Attention respecter les règles de nommage) puis Finish Page 16 sur 30
Projet dans lequel sera la servlet Nom de la servlet Page 17 sur 30
Résultat du code java sans les commentaires. import java.io.ioexception; import javax.servlet.servletexception; import javax.servlet.http.httpservlet; import javax.servlet.http.httpservletrequest; import javax.servlet.http.httpservletresponse; public class MaPremiereServlet extends HttpServlet { protected void doget(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { protected void dopost(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { Lancement d une servlet Clique droit sur le code java puis Run as Run on Server Cliquer sur Finish dans la fenêtre suivante. Ensuite la servlet se lance dans votre navigateur choisit auparavant. Problème connu : Une erreur disant que le serveur Tomcat et déjà lancé. Pour résoudre clique droit dans la barre de notification puis Stop service. Relancer le run as. Page 18 sur 30
Servlet : Insérer une image L image doit être sur le disque local. Créer une servlet puis insérer le code java. Code Java : import java.io.ioexception; import java.io.outputstream; import javax.servlet.servletexception; import javax.servlet.http.httpservlet; import javax.servlet.http.httpservletrequest; import javax.servlet.http.httpservletresponse; public class MaPremiereServlet extends HttpServlet { protected void doget(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { response.setcontenttype("image/jpeg"); OutputStream out = response.getoutputstream(); Page 19 sur 30
//Chemin du fichier local FileInputStream in = new FileInputStream("\\Image_De_Moi.jpg"); int size = in.available(); byte[] content = new byte[size]; in.read(content); out.write(content); in.close(); out.close(); protected void dopost(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { Résultat : Page 20 sur 30
Page 21 sur 30
Servlet Connexion Base de données Pour cela 7 étapes sont importantes : - Choix du pilote (ici mysql-connector) - Fournir l url du serveur - Etablir la connexion - Donner des instructions (SQL) - Exécuter des instructions (executequery (select) & executeupdate(insert, Delete, Update) - Analyser les résultats (ResultSet) - Fermeture de la transaction Code Java : import javax.servlet.*; import javax.servlet.http.httpservlet; import javax.servlet.http.httpservletrequest; import javax.servlet.http.httpservletresponse; import java.io.ioexception; import java.io.printwriter; import java.sql.connection; import java.sql.drivermanager; import java.sql.resultset; import java.sql.sqlexception; import java.sql.statement; public class Mysql extends HttpServlet { /*Définition de la servlet (nous allons répondre a la requete url) Cette fonction peut répondre a une exception*/ public void doget(httpservletrequest requeteclient, HttpServletResponse reponseserveur) throws ServletException, IOException { try { //Déclaration des variables utiles PrintWriter fluxensortie; String titre = "Voici ma première Servlet"; //Le type Mine : spécification de type de sortie (+ svt HTML) reponseserveur.setcontenttype("text/html"); //Si XML exemple reponseserveur.setcontenttype("text/xml"); //Ecriture de la réponse en sortie fluxensortie = reponseserveur.getwriter(); //VARIABLES Statement stmt = null; //Url Base de données String urldemabase = "jdbc:mysql://localhost/gestion_agenda"; Connection connectbdd = null; Page 22 sur 30
//PILOTE try { //Mise en place du Pilote Mysql Class.forName("com.mysql.jdbc.Driver"); //CONNEXION BDD //Connexion à la base de données (login : root mdp : ) connectbdd = DriverManager.getConnection(urlDeMaBase, "root", ""); //STATEMENT connectbdd //Création du Statement avec la variable stmt = connectbdd.createstatement(); //REQUETE SQL //Requete Sql mis dans une variable de type String String marequete = "SELECT * FROM adresse"; //Récupération des données de provenance de l'objet (executequery car SELECT) ResultSet resultat = stmt.executequery(marequete); fluxensortie.println("<table border='1' >"); fluxensortie.println("<tr>"); fluxensortie.println("<td>id</td>"); fluxensortie.println("<td>adresse Rue</td>"); fluxensortie.println("<td>code Postal</td>"); fluxensortie.println("<td>ville</td>"); fluxensortie.println("</tr>"); //Boucle sur chaque enregistrement jusqu'au dernier enregistrement + Affichage à l'écran while(resultat.next()) { fluxensortie.println("<tr><td> " + resultat.getstring(1)+ "</td><td> " + resultat.getstring(2)+ "</td><td> " + resultat.getstring(3)+ "</td><td> " + resultat.getstring(4)+"</td></tr>"); fluxensortie.println("</table>"); //FERMETURE CONNEXION connectbdd.close(); e.getmessage()); catch (SQLException e) { fluxensortie.println("erreur SQL : " + catch(classnotfoundexception e1) { Page 23 sur 30
fluxensortie.println("erreur PILOTE : " + e1.getmessage()); fluxensortie.close(); catch (IOException ex) { System.out.println("Erreur" + ex.getmessage()); Résultat sur le navigateur (ATTENTION LE SERVEUR WAMP DOIT ETRE DEMARRE) Page 24 sur 30
Servlet date dynamique-heure dynamique Code Java : import java.io.ioexception; import java.io.printwriter; import java.text.format; import java.text.simpledateformat; import java.util.date; import javax.servlet.servletexception; import javax.servlet.http.httpservlet; import javax.servlet.http.httpservletrequest; import javax.servlet.http.httpservletresponse; public class DateHeure extends HttpServlet { protected void doget(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { //DATE Date date = new Date(); //Mise en forme de la date Format formatdate = new SimpleDateFormat("dd-MM-yyyy - HH:mm:ss"); //Actualisation response.setheader("refresh", "1"); //Type MINE response.setcontenttype("text/html"); PrintWriter fluxensortie = response.getwriter(); fluxensortie.println(formatdate.format(date)); protected void dopost(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { Résultat navigateur : Page 25 sur 30
Servlet Formulaire Code JAVA : import java.io.ioexception; import java.io.printwriter; import java.sql.connection; import java.sql.drivermanager; import java.sql.resultset; import java.sql.sqlexception; import java.sql.statement; import javax.servlet.servletexception; import javax.servlet.servletoutputstream; import javax.servlet.http.httpservlet; import javax.servlet.http.httpservletrequest; import javax.servlet.http.httpservletresponse; public class Image extends HttpServlet { protected void doget(httpservletrequest req, HttpServletResponse reponseserveur)throws ServletException, IOException { //Type MINE reponseserveur.setcontenttype("text/html"); PrintWriter fluxensortie = reponseserveur.getwriter(); //HTML fluxensortie.println("<html>"); fluxensortie.println("<head>"); fluxensortie.println("</head>"); fluxensortie.println("<body>"); fluxensortie.println("<form method = 'post' action = 'Image'/>"); fluxensortie.println("<table>"); fluxensortie.println("<tr>"); fluxensortie.println("<td>nom :</td><td> <input type = 'text' style = 'text-transform:uppercase' name = \"Nom\" /></td>"); fluxensortie.println("</tr><br />"); fluxensortie.println("<tr><td>matiere :</td> <td><input type = 'text' style = 'text-transform:uppercase' name = \"Matiere\" /></td></tr>"); fluxensortie.println("<br />"); fluxensortie.println("<tr><td><input type = 'submit' name = 'Button' value = 'Validez' width = '150' /></td></tr>"); fluxensortie.println("</form>"); fluxensortie.println("</body>"); fluxensortie.println("</html>"); fluxensortie.close(); public void dopost(httpservletrequest requeteclient, HttpServletResponse reponseserveur) throws ServletException, IOException Page 26 sur 30
{ reponseserveur.setcontenttype("text/html"); PrintWriter fluxensortie = reponseserveur.getwriter(); try { //Déclaration des variables utiles //PrintWriter fluxensortie; String titre = "Voici mon premier Formulaire"; //Le type Mine : spécification de type de sortie (+ svt HTML) reponseserveur.setcontenttype("text/html"); //Si XML exemple reponseserveur.setcontenttype("text/xml"); //Ecriture de la réponse en sortie fluxensortie = reponseserveur.getwriter(); //VARIABLES Statement stmt = null; //Url Base de données String urldemabase = "jdbc:mysql://localhost/agenda"; Connection connectbdd = null; //PILOTE try { //Mise en place du Pilote Mysql Class.forName("com.mysql.jdbc.Driver"); //CONNEXION BDD //Connexion à la base de données (login : root mdp : ) connectbdd = DriverManager.getConnection(urlDeMaBase, "root", ""); //STATEMENT connectbdd //Création du Statement avec la variable stmt = connectbdd.createstatement(); //REQUETE SQL //Requete Sql mis dans une variable de type String //Récupération des données de provenance de l'objet (executequery car SELECT) //getparameter("nom") récupére la valeur du champs nom String marequete = "SELECT Res_date from resmatieres r, matieres m where r.fk_mat_cle = m.mat_cle and r.res_lastuser = '" + requeteclient.getparameter("nom") + "'and m.mat_libelle = '" + requeteclient.getparameter("matiere")+ "'"; ResultSet resultat = stmt.executequery(marequete); fluxensortie.println("<table><tr><td>date Réservation</td></tr>"); Page 27 sur 30
//Boucle sur chaque enregistrement jusqu'au dernier enregistrement + Affichage à l'écran int compteur=0; while(resultat.next()) { fluxensortie.println("<tr><td> " + resultat.getstring(1) + "</td></tr>"); compteur++; réservation</td></tr>"); if (compteur == 0) { fluxensortie.println("<tr><td>pas de fluxensortie.println("</table>"); //FERMETURE CONNEXION connectbdd.close(); e.getmessage()); e1.getmessage()); catch (SQLException e) { fluxensortie.println("erreur SQL : " + catch(classnotfoundexception e1) { fluxensortie.println("erreur PILOTE : " + fluxensortie.close(); catch (IOException ex) { System.out.println("Erreur" + ex.getmessage()); Page 28 sur 30
Résultat dans le navigateur : Après validation : S il y a des réservations Sinon Page 29 sur 30
SERVLETS (AVEC JSP) Pour créer un fichier JSP (à mettre à la racine du projet) pour cela clique droit sur le projet puis new et jsp file Donner un nom et insérer le code java suivant. Puis exécuter. Code JSP : <html> <head> <title>mon premier JSP</title> </head> <body> <h1>bonjour tout le monde</h1> Nous sommes le //Expression<%= new java.util.date().tostring() %> et tout va bien. <br /> //Scriplet<% String [] nom = {"toto","tata"; for (int i = 0; i < nom.length; i++){ %> //Expression<%= i %>ème nom est <%= nom[i]%> <% %> </body> </html> Navigateur web : Page 30 sur 30