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 :

[Fort Débutant] Projet Maven/JSP/SQL sous Netbeans


Sujet :

Servlets/JSP Java

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2013
    Messages : 8
    Points : 4
    Points
    4
    Par défaut [Fort Débutant] Projet Maven/JSP/SQL sous Netbeans
    Bonsoir,

    Je suis étudiant en dernière année d'informatique et cette année j'ai un 'cours' de développement web, orienté JSP/Servlet.
    Voilà plusieurs semaines que notre prof et notre classe avons bloqué sur un problème : impossible d'afficher le contenu d'une table SQL (qui n'a été résolu qu'assez récemment avec des rustines).

    Pour résumer, le prof utilise Eclipse, Squirrel SQL, Tomcat et, le pire, Cayenne pour générer des classes liées aux tables SQL. N'ayant eu que des problèmes lors de la configuration de tous ces logiciels, je me suis dit Zut, et j'ai décidé d'utiliser Netbeans qui intègre tout à la fois.
    Le problème c'est que ce Monsieur, vu que j'utilise Netbeans, ne veut pas m'aider et les documentations que je trouve sur le net sont assez obscures (certains tutos sur youtube sont en espagnol ). C'est pour cela que je m'adresse à vous. J'ai pourtant l'impression d'y être presque mais quelque chose m'échappe !

    Le but de l'exercice que j'aimerais accomplir :
    Tout simplement afficher le contenu d'une table via connexion avec MySQL.

    J'ai créé un projet Maven->Web application sous Netbeans. J'y ai connecté ma base de donnée via l'éditeur inclus.
    Voici le contenu de ma table Pilotes :


    J'ai ensuite généré une Entity Class (pour remplacer le travail de cayenne) :



    J'ai donc une classe Pilotes.java avec plein de méthodes, des getter, des setters, que j'imagine que je vais utiliser pour tout ce qui est requêtes SQL.



    J'ai donc ensuite créé deux fichiers : ListUser.java et ListUser.jsp
    Voici le contenu de chacun d'entre eux, mais ils sont très certainement faux (cfr plus bas). Je précise que tout ceci était un copier-coller bête et méchant du code source du prof... Je pense que beaucoup manque, notamment la structure de mes données SQL.

    ListUser.java (je n'ai mis ici que la méthode doGet, le reste n'a pas été modifié :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
     
            HttpSession session = request.getSession();
            DataContext context = ServletUtil.getSessionContext(session);
            SelectQuery query = new SelectQuery(Pilotes.class);
            List<Pilotes> steps = context.performQuery(query);
            request.setAttribute("Pilotes", steps);
     
            String nextJSP = "/listUser.jsp";
            RequestDispatcher dispatcher = getServletContext().getRequestDispatcher(nextJSP);
            dispatcher.forward(request, response);
        }
    ListUser.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
    <%@page contentType="text/html" pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
            <title>JSP Page</title>
        </head>
        <body>
            <h1>Gestion des pilotes</h1>
            <p>message venant de la serlvet</p>
        <c:forEach var="user" items="${Pilotes}">
            <li>${user.getNom()} = ${user.getLogin() }</li>
        </c:forEach>
     
    </body>
    </html>
    Le problème, c'est que dans le ListUser.java, j'utilise des DataContext, ServletUtil et SelectQuery qui dépendent de Cayenne.
    En faisant des :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    import org.apache.cayenne.access.DataContext;
    import org.apache.cayenne.conf.ServletUtil;
    import org.apache.cayenne.query.SelectQuery;
    Ca compile mais TomCat / Glassfish me donnent plein d'erreurs ou tout simplement une page blanche.
    J'aimerais me débarrasser de ces dépendances ! Je n'utilise plus Cayenne, mes classes sont générées directement via Netbeans, il faudrait donc que je remplace ces quelques lignes de code par quelque chose de plus 'standard'.

    C'est là que je fais appel à vous.
    Que me conseillez-vous de faire ? Que puis-je écrire comme code pour que lorsque je fais appel à ma page web ListUser.jsp le contenu de ma table Pilotes s'affiche ?

    D'avance, merci beaucoup et bonne soirée !

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    Cayenne est un framework de persistence. Si tu veux t'en passer, tu peux jeter à la poubelle ta classe java et te tapper tout le SQL à la main .

    Maintenant, il n'est pas très connu non plus ce framework. Si tu n'es pas obligé de le garder, tu peux plutot t'orienter vers hibernate, qui fait le même genre de chose (mais avec d'autres noms de classes) et qui est mieux connu donc mieux documenté.

    http://www.hibernate.org/docs

    Basiquement, de toute façon, si tu passe par un framework de persistance (hibernate, ibatis, jdo, cayenne, ...) la technique est souvent la même

    1) on mappe des objet sur la base (soit à la main, soit via des outils)
    2) on crée un fichier de config pour l'accès à la base de donnée
    3) à l'exécution, on récupère une "session" et on lui demande de charger les dits objets depuis la DB

    Perso, je ne connaissait pas cayenne

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2013
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    Bonsoir et merci pour la réponse rapide !

    Moi non plus je connaissais pas du tout Cayenne. En tappant "Tuto Cayenne" sur Google, c'est marrant mais on trouve essentiellement des informations sur le débridage des moteurs de Porsche Cayenne

    Cayenne est un framework de persistence. Si tu veux t'en passer, tu peux jeter à la poubelle ta classe java et te tapper tout le SQL à la main .
    D'accord, c'est déjà un peu plus clair. J'avais plus ou moins compris cette notion. Je pense que Netbeans gère ça automatiquement. Dans le doute, j'ai créé un nouveau fichier 'persistence.xml' qui me semble correspond à ce que je veux faire (et en plus sous NetBeans c'est super facile à faire, dans ce cas EclipseLink JPA je verrai par la suite pour Hibernate) :





    1) on mappe des objet sur la base (soit à la main, soit via des outils)
    Ca, je pense que c'est fait (via la génération de mes classes Java)
    2) on crée un fichier de config pour l'accès à la base de donnée
    C'est créé (cfr ci-dessus)
    3) à l'exécution, on récupère une "session" et on lui demande de charger les dits objets depuis la DB
    Là j'ai un peu de mal

    En gros, mon code original n'est plus bon du tout ? Ca me semblait presque complet, non ?
    Je suis sûr que je ne suis pas loin d'y arriver !!

  4. #4
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    Ben je suppose que c'est ce que fait ce bout de code:

    HttpSession session = request.getSession();
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
            DataContext context = ServletUtil.getSessionContext(session);

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2013
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    Yep, c'est ce petit bout de code là en effet...
    Et vu la spécificité du bazar (code jsp, classe java, jongler les arguments entre les deux), j'ai du mal à trouver une alternative à ces deux lignes de Cayenne sur le net...
    Ca fait des semaines que je m'arrache les cheveux et passe mes soirées là-dessus.. Grrrr. (craquage)

Discussions similaires

  1. Auto complétion SQL sous NetBeans
    Par arcadev dans le forum NetBeans
    Réponses: 1
    Dernier message: 31/10/2014, 00h10
  2. Réponses: 0
    Dernier message: 26/04/2011, 18h31
  3. Réponses: 5
    Dernier message: 20/09/2009, 01h01
  4. Projet JSP sous Netbeans : obligé de démarrer Netbeans ?
    Par Monkey_D.Luffy dans le forum NetBeans
    Réponses: 2
    Dernier message: 13/06/2008, 19h03

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