Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 4 sur 4
  1. #1
    Membre du Club
    Homme Profil pro guillaume
    Ingénieur développement logiciels
    Inscrit en
    avril 2012
    Messages
    150
    Détails du profil
    Informations personnelles :
    Nom : Homme guillaume
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : avril 2012
    Messages : 150
    Points : 40
    Points
    40

    Par défaut J2EE et Base de données MySQL

    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 :

    Code :
    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 servlet Inscription.java :

    Code :
    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." );
    		}
    	}
     
    }
    Une JSP , contact.jsp :

    Code :
    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>
    Et mon fichier web.xml :

    Code :
    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>
    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 ...)

    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. :

    Code :
    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
    package 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
    	}
     
    }
    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.

    Pouvez vous m'aiguiller svp. Merci

  2. #2
    Membre du Club
    Homme Profil pro guillaume
    Ingénieur développement logiciels
    Inscrit en
    avril 2012
    Messages
    150
    Détails du profil
    Informations personnelles :
    Nom : Homme guillaume
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : avril 2012
    Messages : 150
    Points : 40
    Points
    40

    Par défaut

    En fait j'ai un probleme juste pour joindre ma classe testjdbc.java qui contient une requete en dur , select * from ... , et si je fais un INSERT ... ça fonctionne bien mais en dur dans la classe. Moi ce que je voudrais c'est récupérer les parametres via GetParametre et les intégrer en tant que champ en dynamique dans mon INSERT lorsque mon formulaire est soumis.

  3. #3
    Membre éprouvé
    Femme Profil pro
    Développeur Java
    Inscrit en
    décembre 2009
    Messages
    233
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Finance

    Informations forums :
    Inscription : décembre 2009
    Messages : 233
    Points : 423
    Points
    423

    Par défaut

    Salut,
    Si je comprend la question tu devrais regarder du coté des prepared statement:
    http://docs.oracle.com/javase/1.4.2/docs/api/java/sql/PreparedStatement.html

  4. #4
    Expert Confirmé
    Avatar de olivier.pitton
    Homme Profil pro olivier pitton
    Étudiant
    Inscrit en
    juin 2012
    Messages
    355
    Détails du profil
    Informations personnelles :
    Nom : Homme olivier pitton
    Âge : 25
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : juin 2012
    Messages : 355
    Points : 2 638
    Points
    2 638

    Par défaut

    Plop,

    Il te suffit de faire une classe gérant la connexion à la base de données, avec des méthodes insert / select / ... que tu appelles depuis ta Servlet. Toutes les Servlets que tu crées utilises ta classe TestJDBC pour effectuer les traitements.

    Pour récupérer les paramètres depuis un formulaire, il te suffit de faire getParameter(name) et de passer ces paramètres à la méthode effectuant le insert. Par exemple faire "getParameter("name")" pour récupérer le nom et le passer à "TestJDBC.insert(name)".

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •