IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Servlets/JSP Java Discussion :

J2EE et Base de données MySQL


Sujet :

Servlets/JSP Java

  1. #1
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2012
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    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 : 277
    Points : 126
    Points
    126
    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 : 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 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
    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 : 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>
    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
    <?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 : 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
    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 habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2012
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    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 : 277
    Points : 126
    Points
    126
    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 confirmé
    Femme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2009
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Femme

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

    Informations forums :
    Inscription : Décembre 2009
    Messages : 236
    Points : 491
    Points
    491
    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
    Membre émérite
    Avatar de olivier.pitton
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2012
    Messages
    355
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2012
    Messages : 355
    Points : 2 814
    Points
    2 814
    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)".

Discussions similaires

  1. J2EE et Base de donnée MySQL
    Par linuxien_62 dans le forum JDBC
    Réponses: 10
    Dernier message: 02/01/2013, 15h45
  2. [JDBC]acces à une base de données mysql
    Par sehaba dans le forum JDBC
    Réponses: 13
    Dernier message: 07/12/2004, 00h39
  3. probleme construction base de donnes MySql...Help
    Par chakan dans le forum Requêtes
    Réponses: 7
    Dernier message: 21/07/2004, 11h27
  4. connection à base de donnée MYSQL
    Par zouzou_zaza dans le forum Bases de données
    Réponses: 11
    Dernier message: 04/07/2004, 12h31
  5. XML->Base de donnée Mysql
    Par lheureuxaurelie dans le forum XQUERY/SGBD
    Réponses: 4
    Dernier message: 10/03/2004, 23h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo