Bonjour ,
je me dirige vers vous car étant en 2eme année de master , j'ai un petit TD à faire , J'ai déjà bien avancé mais je me perds au moment d'établir une insertion des champs de mon formulaire dans ma base de donnée mysql. Pouvez vous m'aider ?
En détail j'ai tout d'abord une classe TestJDBC.java :
Une servlet Inscription.java :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90 package com.td.bdd; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList; import java.util.List; import javax.servlet.http.HttpServletRequest; //@WebServlet("/test_jdbc") public class TestJDBC { private List<String> messages = new ArrayList<String>(); public List<String> executerTests( HttpServletRequest request ){ /* Chargement du driver JDBC pour MySQL */ try { messages.add( "Chargement du driver..." ); Class.forName( "com.mysql.jdbc.Driver" ); messages.add( "Driver chargé !" ); } catch ( ClassNotFoundException e ) { messages.add( "Erreur lors du chargement : le driver n'a pas été trouvé dans le classpath ! <br/>" + e.getMessage() ); } /* Connexion à la base de données */ String url = "jdbc:mysql://localhost:3306/bdd_contacts"; String utilisateur = "java"; String motDePasse = "123456"; Connection connexion = null; Statement statement = null; ResultSet resultat = null; try { messages.add( "Connexion à la base de données..." ); connexion = DriverManager.getConnection( url, utilisateur, motDePasse ); messages.add( "Connexion réussie !" ); /* Création de l'objet gérant les requêtes */ statement = connexion.createStatement(); messages.add( "Objet requête créé !" ); /* Exécution d'une requête de lecture */ resultat = statement.executeQuery( "SELECT id, nom, prenom, email FROM contact;" ); messages.add( "Requête \"SELECT id, nom, prenom, email FROM contact;\" effectuée !" ); /* Récupération des données du résultat de la requête de lecture */ while ( resultat.next() ) { int idContact = resultat.getInt( "id" ); String nomContact = resultat.getString( "nom" ); String prenomContact = resultat.getString( "prenom" ); String emailContact = resultat.getString( "email" ); /* Formatage des données pour affichage dans la JSP finale. */ messages.add( "Données retournées par la requête : id = " + idContact + ", nom = " + nomContact + ", prenom = " + prenomContact + ", email = " + emailContact + "." ); } } catch ( SQLException e ) { messages.add( "Erreur lors de la connexion : <br/>" + e.getMessage() ); } finally { messages.add( "Fermeture de l'objet ResultSet." ); if ( resultat != null ) { try { resultat.close(); } catch ( SQLException ignore ) { } } messages.add( "Fermeture de l'objet Statement." ); if ( statement != null ) { try { statement.close(); } catch ( SQLException ignore ) { } } messages.add( "Fermeture de l'objet Connection." ); if ( connexion != null ) { try { connexion.close(); } catch ( SQLException ignore ) { } } } return messages; } }
Une JSP , contact.jsp :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101 package com.td.servlet; import java.io.IOException; import java.util.HashMap; import java.util.Map; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @SuppressWarnings("serial") public class Inscription extends HttpServlet { public static final String VUE = "/WEB-INF/contact.jsp"; public static final String CHAMP_NOM = "nom"; public static final String CHAMP_PRENOM = "prenom"; public static final String CHAMP_EMAIL = "email"; public static final String CHAMP_GROUPE = "groupe"; public static final String ATT_ERREURS = "erreurs"; public static final String ATT_RESULTAT = "resultat"; public void doGet( HttpServletRequest request, HttpServletResponse response ) throws ServletException, IOException{ /* Affichage de la page d'inscription */ this.getServletContext().getRequestDispatcher( VUE ).forward( request, response ); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String resultat; Map<String, String> erreurs = new HashMap<String, String>(); //récupération des champs du formulaire String nom = request.getParameter(CHAMP_NOM); String prenom = request.getParameter(CHAMP_PRENOM); String email = request.getParameter(CHAMP_EMAIL); String groupe = request.getParameter(CHAMP_GROUPE); try { validationNom(nom); } catch (Exception e){ erreurs.put(CHAMP_NOM, e.getMessage()); } try { validationPrenom(prenom); } catch (Exception e){ erreurs.put(CHAMP_PRENOM, e.getMessage()); } try { validationEmail(email); } catch (Exception e){ erreurs.put(CHAMP_EMAIL, e.getMessage()); } //initialisation du résultat global de la validation if(erreurs.isEmpty()){ resultat = "Succès de l'inscription."; }else{ resultat = "Echec de l'inscription."; } //Stockage du résultat et des messages d'erreur dans l'objet request request.setAttribute(ATT_ERREURS, erreurs); request.setAttribute(ATT_RESULTAT, resultat); //transmission de la paire d'objets request/response à la JSP this.getServletContext().getRequestDispatcher(VUE).forward(request, response); } //verification taille du nom private void validationNom(String nom)throws Exception{ if(nom.trim().length()<2){ throw new Exception("un nom contient au moins deux caractères celui saisi est trop court"); } } //verification taille du prenom private void validationPrenom(String prenom)throws Exception{ if(prenom.trim().length()<2){ throw new Exception("un prenom contient au moins deux caractères celui saisi est trop court"); } } //verification email formulaire private void validationEmail(String email)throws Exception{ if ( email != null && email.trim().length() != 0 ) { if ( !email.matches( "([^.@]+)(\\.[^.@]+)*@([^.@]+\\.)+([^.@]+)" ) ) { throw new Exception( "Merci de saisir une adresse mail valide." ); } } else { throw new Exception( "Merci de saisir une adresse mail." ); } } }
Et mon fichier web.xml :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43 <%@ page pageEncoding="UTF-8" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>Inscription</title> </head> <body> <form method="post" action="contact"> <fieldset> <legend>Inscription</legend> <p>Vous pouvez vous inscrire via ce formulaire.</p> <label for="nom">Nom d'utilisateur</label> <input type="text" id="nom" name="nom" value="<c:out value="${param.nom}"/>" size="20" maxlength="20" /> <span>${erreurs['nom']}</span> <br /> <label for="prenom">Prenom d'utilisateur</label> <input type="text" id="prenom" name="prenom" value="<c:out value="${param.prenom}"/>" size="20" maxlength="20" /> <span>${erreurs['prenom']}</span> <br /> <label for="email">Adresse email <span>*</span></label> <input type="email" id="email" name="email" value="<c:out value="${param.email}"/>" size="20" maxlength="60" /> <span>${erreurs['email']}</span> <br /> <label for="groupe">Groupe d'utilisateur</label> <input type="radio" id="groupe1" name="groupe1" value="<c:out value="${param.groupe}"/>" /> <input type="radio" id="groupe2" name="groupe2" value="<c:out value="${param.groupe}"/>" /> <span>${erreurs['nom']}</span> <br /> <input type="submit" value="Inscription" class="sansLabel" /> <br /> <p class="${empty erreurs ? 'succes' : 'erreur'}">${resultat}</p> </fieldset> </form> </body> </html>
Au préalable j'avais effectué un test pour savoir si j'arrivais bien à communiquer avec ma base de donnée mysql en mode lecture via la requête présente dans ma classe TestJDBC.java ( c'est une requête Select * from ...)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 <?xml version="1.0" encoding="ISO-8859-1"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:javaee="http://java.sun.com/xml/ns/javaee" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0"> <javaee:description>Interface web</javaee:description> <javaee:display-name>Service bdd</javaee:display-name> <servlet> <servlet-name>GestionTestJDBC</servlet-name> <servlet-class>com.td.servlet.GestionTestJDBC</servlet-class> </servlet> <servlet-mapping> <servlet-name>GestionTestJDBC</servlet-name> <url-pattern>/test_jdbc</url-pattern> </servlet-mapping> <servlet> <servlet-name>Inscription</servlet-name> <servlet-class>com.td.servlet.Inscription</servlet-class> </servlet> <servlet-mapping> <servlet-name>Inscription</servlet-name> <url-pattern>/contact</url-pattern> </servlet-mapping> </web-app>
Voici la servlet de test qui se charge d'executer la requete et d'afficher le contenu de ma base et cela fonctionne correctement j'en déduis donc que je n'ai pas de problème d'implémentation de ma base. :
Ma question pour finir est , comment je fais maintenant pour pouvoir faire un Insert à partir de mon formulaire contact.jsp. Je précise que le model MVC n'est pas encore trop respecter car me manque le controleur et pour le moment c'est ma servlet Inscription.java qui s'occupe de tout ou presque.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51package com.td.servlet; import java.io.IOException; import java.util.List; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.td.bdd.TestJDBC; /** * Servlet implementation class GestionTestJDBC */ //@WebServlet("/test_jdbc") public class GestionTestJDBC extends HttpServlet { private static final long serialVersionUID = 1L; public static final String ATT_MESSAGES = "messages"; public static final String VUE = "/WEB-INF/test_jdbc.jsp"; /** * @see HttpServlet#HttpServlet() */ public GestionTestJDBC() { super(); // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { /* Initialisation de l'objet Java et récupération des messages */ TestJDBC test = new TestJDBC(); List<String> messages = test.executerTests( request ); /* Enregistrement de la liste des messages dans l'objet requête */ request.setAttribute( ATT_MESSAGES, messages ); /* Transmission vers la page en charge de l'affichage des résultats */ this.getServletContext().getRequestDispatcher( VUE ).forward( request, response ); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub } }
Pouvez vous m'aiguiller svp. Merci
Partager