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 :

Appel Java puis Hibernate depuis JSP


Sujet :

Servlets/JSP Java

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2006
    Messages : 54
    Par défaut Appel Java puis Hibernate depuis JSP
    Bonjour a tous,

    Alors voila j'ai un petit souci..

    Depuis une page JSP, j'essaie d'appeler une classe JAVA qui se trouve dans un package. Cette classe JAVA utilise Hibernate pour accéder à une base de données MySQL.

    Dans mon JSP, j'appelle ma classe de la manière suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <%Test test = new Test();%>
    Et bien entendu au début du fichier JSP, j'importe le package contenant ma classe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <%@page import="checkauthentication.*" %>
    Cependant cela ne fonctionne pas

    Pour info, j'ai créé un autre projet de test totalement en JAVA, et j'arrive bien à accéder à la base de données, mais dès que j'essaie de faire l'appel de ma classe depuis une page JSP, avec exactement le même code, cela ne fonctionne pas...

    Je n'ai aucune erreur dans Netbeans

  2. #2
    Membre Expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Par défaut
    Salut,

    Dans JSP, utilises les beans

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <jsp:useBean id="idihb" scope="session" class="Beans.ClassTest"/>
    pour utiliser les méthodes idihb.methode1

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2006
    Messages : 54
    Par défaut
    Je connais pas les Beans... Est-ce qu'il y a pas une manière simple de faire ça ?

    Ou alors je dois changer quoi dans mon projet pour utiliser ces Beans ?

  4. #4
    Membre émérite
    Avatar de kmdkaci
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 560
    Par défaut Appel Java puis Hibernate depuis JSP
    Bonjour,
    ça sera un peu "génant de ne pas utiliser les beans avec Hibernate".
    Aussi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <%Test test = new Test();%>
    Là, tu instancie ta classe Test, sans plus. Que contient la classe Test?
    Tu ne fais aucun appel à une méthode interne, à moins que tu n'as pas posté le code adéquat.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2006
    Messages : 54
    Par défaut
    Voici le code de la classe Test :

    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
     
    package checkauthentication;
    //import java.util.*;
     
    import org.hibernate.*;
    import org.hibernate.cfg.Configuration;
     
    public class Test {
     
        public static void main(String[] args)
                throws HibernateException {
            System.out.println("Debut de la classe Test");
            // Create SessionFactory and Session object
            SessionFactory sessions = new Configuration().configure().buildSessionFactory();
            Session session = sessions.openSession();
            // Perform life-cycle operations under a transaction
            Transaction tx = null;
            try {
                tx = session.beginTransaction();
     
                Pass p1 = new Pass();
                p1.setPwd("12345");
                session.save(p1);
                Pass pass = (Pass) session.get(Pass.class, p1.getId());
                System.out.println("mot de passe=" + pass.getPwd());
     
                tx.commit();
                tx = null;
            } catch (HibernateException e) {
                if (tx != null) {
                    tx.rollback();
                }
                e.printStackTrace();
            } finally {
                session.close();
            }
        }
    }

    Comme ça ne fonctionnait pas et que vous m'avez dit d'essayer les Beans, j'ai effectué les modifs suivantes :
    Dans le fichier JSP j'ai ajouté :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <jsp:useBean id="idihb" scope="session" class="checkauthentication.Test"/>
    Et à la place de mon
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Test test = new Test();
    j'ai mis Puis j'ai modifié la classe Test, tout ce qu'il y avait dans Test() j'y ai déplacé dans la méthode Test.ttt()

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    package checkauthentication;
     
    import org.hibernate.*;
    import org.hibernate.cfg.Configuration;
     
    public class Test {
     
        public Test(){}
        public void ttt() {
           /*Code d'avant*/
     
        }
     
    }
    Mais bon ça a rien changé...

  6. #6
    Membre Expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Par défaut
    Et dans ta fonction ttt maintenant, tu a écris quoi ??? (ya pas de main ...)

    Et dans ta JSP, elle est lancée comment ???

  7. #7
    Membre expérimenté Avatar de aperrin
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    221
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 221
    Par défaut
    La pour une application MVC c'est pas gagné.
    En faisant trés simple :
    1) Dans ta servlet tu récupère des objets métier en utilisant hibernate (en étant puriste tu passe par un manager car pas de dao dans une servlet ou struts action)
    2) tu stocke ces objets métier dans la request
    3) tu affiche ces objets métiers dans la jsp

    Tu n'instancie surtout pas d'objet qui font appel à des classes hibernate dans une jsp.

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2006
    Messages : 54
    Par défaut
    En fait je n'aimerais pas trop utiliser des servlet, j'aimerais faire ça le plus simplement possible pour que ce soit compréhensible par quelqu'un d'autre...

    Voici le code complet du fichier Test.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
    package checkauthentication;
     
    import org.hibernate.*;
    import org.hibernate.cfg.Configuration;
     
    public class Test {
     
        public Test(){}
        public void ttt() {
     
            // Set up database tables
            HibernateUtil.droptable("drop table pass");
            HibernateUtil.setup("create table pass ( id int, cname VARCHAR(20))");
     
            // Create SessionFactory and Session object
            SessionFactory sessions = new Configuration().configure().buildSessionFactory();
            Session session = sessions.openSession();
     
            // Perform life-cycle operations under a transaction
            Transaction tx = null;
            try {
                tx = session.beginTransaction();
     
                // Create a Pass object and save it
                Pass p1 = new Pass();
                p1.setName("Sang Shin");
                session.save(p1);
     
                // Create another Pass object and save it.
                Pass p2 = new Pass();
                p2.setName("Young Shin");
                session.save(p2);
     
                // Retrieve the person objects
                Pass person = (Pass)session. get(Pass.class, p1.getId());
                System.out.println("First person retrieved = " + person.getName());
                person = (Pass)session.get(Pass.class, p2.getId());
                System.out.println("Second person retrieved = " + person.getName());
     
                tx.commit();
                tx = null;
            } catch ( HibernateException e ) {
                if ( tx != null ) tx.rollback();
                e.printStackTrace();
            } finally {
                session.close();
            }
     
            // Display tables
            HibernateUtil.checkData("select * from pass");
     
        }
     
    }
    (j'ai fait quelques modifs dans les données Pass ci-dessus mais rien de grave, j'ai juste repris un code qui fonctionnait parfaitement en JAVA pour voir si j'avais un problème avec le nouveau, mais même résultat...)

    Voici le code complet de la JSP (response.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
     
     
    <%@page contentType="text/html" pageEncoding="UTF-8"%>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
       "http://www.w3.org/TR/html4/loose.dtd">
     
    <%@page import="java.util.*" %>
    <%@page import="checkauthentication.*" %>
    <jsp:useBean id="idihb" scope="session" class="checkauthentication.Test"/>
     
    <%
    String entry = null;
    entry = (String)request.getParameter("entry");
    out.print("entry=");
    out.print(entry);
     
     
    System.out.print("Avant classe TEST");
    //Test test = new Test();
    idihb.ttt();
    System.out.print("Après classe TEST");
     
    if (entry.equals("1")){%>
    OK
    <%}
    else {%>
    ERROR
    <%}
    %>
    Cette JSP est exécutée après avoir cliqué sur un bouton OK d'une autre JSP (index.jsp), si jamais voici son code, c'est tout bête, juste une Form HTML :

    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
     
     
    <%@page contentType="text/html" pageEncoding="UTF-8"%>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
     
    <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
            <title>JSP Page</title>
        </head>
        <body>
            <form name="Login" action="response.jsp" method="POST">
                Enter value :
                <input type="text" name="entry" value="" />
                <input type="submit" value="OK" />
            </form>
        </body>
    </html>

  9. #9
    Membre expérimenté Avatar de aperrin
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    221
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 221
    Par défaut
    Ce sera peut être compréhensible (encore que) mais totalement inmaintenable...

    Donc vraiment pour de trés petites applications web et dans ce cas pourquoi ne pas enviseager ruby on rails ou grails ou cake php.

  10. #10
    Membre Expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Par défaut
    ça marche pas c'est à dire que:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
                System.out.println("First person retrieved = " + person.getName());
    donne rien ???

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2006
    Messages : 54
    Par défaut
    Et bien dans le premier code entièrement JAVA,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println("First person retrieved = " + person.getName());
    fonctionne ! D'ailleurs tout fonctionne parfaitement !

    Part contre quand j'essaie d'appeler cette même méthode dans une JSP, ça marche pas !

    ça se bloque, il y a rien qui se passe, le navigateur tourne tourne mais rien...

    Alors je sais pas si c'est mon appel qui est faux, s'il faut le faire d'une autre manière, si j'ai oublié quelque chose, etc...

    Et là je sèche depuis un bon moment... Si jamais je peux mettre mes sources complètes quelque part, s'il y en a un qui veut tester et voir ce que ça donne...

  12. #12
    Membre Expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Par défaut
    Qd tu dis rien ne se passe, cad rien de rien ... aucun affichage ....
    même pas le System.out.print("Avant classe TEST");

    Ex si dans ta page on enléve l'appel à la fonction idihb.ttt(); alors elle s'affiche normalement ?

  13. #13
    Expert confirmé

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Par défaut
    Personnellement, je ne comprends pas bien ce que tu cherches à faire.

    La méthode ttt ne récupère pas la valeur saisie dans le formulaire et de plus, elle n'affiche rien dans la page.
    Vu le code de la jsp, la seule chose qui doit s'afficher c'est OK ou ERROR.

    Donc, que veux-tu faire au juste ?

  14. #14
    Membre émérite
    Avatar de kmdkaci
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 560
    Par défaut Appel Java puis Hibernate depuis JSP
    Bonjour,
    Mais je pense que System.out.print() ne marche pas dans le navigateur... Vous parlez de ça ? A moins que j'ai loupé quelques choses...

    Essayes plutôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    out.println("First person retrieved = " + person.getName());

  15. #15
    Expert confirmé

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Par défaut
    Citation Envoyé par kmdkaci Voir le message
    Mais je pense que System.out.print() ne marche pas dans le navigateur... Vous parlez de ça ? A moins que j'ai loupé quelques choses...
    C'est bien pour cela que j'ai écrit que la méthode ttt n'affiche rien dans la page.
    Le System.out.println écrit dans la console et dans la log du serveur.

  16. #16
    Membre averti
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2006
    Messages : 54
    Par défaut
    Le but de ce programme (au final) c'est de faire un contrôle d'authentification

    Dans la premiere page JSP, on a une FORM HTML et on entrera username+password, ensuite la page response.jsp recevra ces informations et devra aller les vérifier dans la base de données MySQL (en utilisant Hibernate)

    Elle affichera ensuite juste un OK ou un ERROR dans le cas ou l'ahthentification à échoué

    Mais tout ça, c'est au final ! Pour le moment, la page response.jsp essaie juste d'accéder à la base de données et d'y écrire/lire quelques données !

    Pour le moment, la méthode ttt() en effet ne récupère pas la valeur du formulaire, elle essaie juste d'accéder à la base (en écriture, puis essaie de lire les données écrites)

    Quand je dis que ça affiche rien, c'est que lorsque je clique sur le bouton OK de la page index.jsp, et bien le navigateur indique juste "Chargement" indéfiniment, rien ne se passe!

    Et si j'enlève la ligne
    là, ça marche (enfin, la page response.jsp indique par exemple "entry=6 ERROR" si j'ai entré la valeur 6 dans le formulaire, mais tout ça biensur sans accéder à la base de données vu que les accès hibernate se font dans la méthode ttt() de la classe Test())


    Si jamais voici mon code complet :
    Fichier index.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
     
    <%@page contentType="text/html" pageEncoding="UTF-8"%>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
     
    <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
            <title>JSP Page</title>
        </head>
        <body>
            <form name="Login" action="response.jsp" method="POST">
                Enter value :
                <input type="text" name="entry" value="" />
                <input type="submit" value="OK" />
            </form>
        </body>
    </html>
    Fichier response.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
    <%@page contentType="text/html" pageEncoding="UTF-8"%>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
       "http://www.w3.org/TR/html4/loose.dtd">
     
    <%@page import="java.util.*" %>
    <%@page import="checkauthentication.*" %>
    <jsp:useBean id="idihb" scope="session" class="checkauthentication.Test"/>
     
    <%
    String entry = null;
    entry = (String)request.getParameter("entry");
    out.print("entry=");
    out.print(entry);
     
     
    System.out.print("Avant classe TEST");
    //Test test = new Test();
    idihb.ttt();
    System.out.print("Après classe TEST");
     
    if (entry.equals("1")){%>
    OK
    <%}
    else {%>
    ERROR
    <%}
    %>
    Fichier Test.java dans le package checkauthentication
    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
    package checkauthentication;
     
     
    import org.hibernate.*;
    import org.hibernate.cfg.Configuration;
     
    public class Test {
     
        public Test(){}
        public void ttt() {
     
            // Set up database tables
            HibernateUtil.droptable("drop table pass");
            HibernateUtil.setup("create table pass ( id int, cname VARCHAR(20))");
     
            // Create SessionFactory and Session object
            SessionFactory sessions = new Configuration().configure().buildSessionFactory();
            Session session = sessions.openSession();
     
            // Perform life-cycle operations under a transaction
            Transaction tx = null;
            try {
                tx = session.beginTransaction();
     
                // Create a Pass object and save it
                Pass p1 = new Pass();
                p1.setName("Sang Shin");
                session.save(p1);
     
                // Create another Pass object and save it.
                Pass p2 = new Pass();
                p2.setName("Young Shin");
                session.save(p2);
     
                // Retrieve the person objects
                Pass person = (Pass)session. get(Pass.class, p1.getId());
                System.out.println("First person retrieved = " + person.getName());
                person = (Pass)session.get(Pass.class, p2.getId());
                System.out.println("Second person retrieved = " + person.getName());
     
                tx.commit();
                tx = null;
            } catch ( HibernateException e ) {
                if ( tx != null ) tx.rollback();
                e.printStackTrace();
            } finally {
                session.close();
            }
     
            // Display tables
            HibernateUtil.checkData("select * from pass");
     
        }
     
    }
    Fichier Pass.java dans le package checkauthentication
    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
    package checkauthentication;
     
    import java.io.Serializable;
     
    public class Pass implements Serializable {
     
        private int id;
        private String name;
     
        protected Pass() {
        }
     
        public Pass(int id, String name) {
            this.id = id;
            this.name = name;
        }
     
        public int getId() {
            return id;
        }
     
        public void setId(int id) {
            this.id = id;
        }
     
        public String getName() {
            return name;
        }
     
        public void setName(String name) {
            this.name = name;
        }
     
    }
    Fichier Pass.hbm.xml dans le package checkauthentication
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
     
    <hibernate-mapping>
      <class name="Pass" table="pass">
        <id name="id" type="int">
          <generator class="increment"/>
        </id>
        <property column="cname" name="name" type="string"/>
      </class>
    </hibernate-mapping>
    Fichier HibernateUtil.java dans le package checkauthentication, c'est un fichier que j'ai récupéré d'un autre programme qui fonctionne bien, je ne l'ai pas touché
    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
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    package checkauthentication;
     
     
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.Statement;
     
    import java.sql.ResultSet;
    import java.sql.ResultSetMetaData;
     
    import org.hibernate.HibernateException;
    import org.hibernate.Session;
    import org.hibernate.SessionFactory;
    import org.hibernate.cfg.Configuration;
     
    public class HibernateUtil {
     
        // Database configuration
        public static String url = "jdbc:mysql://localhost:3306/passwords";
        public static String dbdriver = "com.mysql.jdbc.Driver";
        public static String username = "root";
        public static String password = "root";
     
        public static final SessionFactory sessionFactory;
     
        static {
            try {
                // Create the SessionFactory from hibernate.cfg.xml
                sessionFactory = new Configuration().configure().buildSessionFactory();
            } catch (Throwable ex) {
                // Make sure you log the exception, as it might be swallowed
                System.err.println("Initial SessionFactory creation failed." + ex);
                throw new ExceptionInInitializerError(ex);
            }
        }
     
        public static final ThreadLocal session = new ThreadLocal();
     
        public static Session currentSession() throws HibernateException {
            Session s = (Session) session.get();
            // Open a new Session, if this thread has none yet
            if (s == null) {
                s = sessionFactory.openSession();
                // Store it in the ThreadLocal variable
                session.set(s);
            }
            return s;
        }
     
        public static void closeSession() throws HibernateException {
            Session s = (Session) session.get();
            if (s != null)
                s.close();
            session.set(null);
        }
     
        static Connection conn;
        static Statement st;
     
        public static void setup(String sql) {
            try {
                createStatement();
                st.executeUpdate(sql);
            } catch (Exception e) {
                System.err.println("Got an exception! ");
                e.printStackTrace();
                System.exit(0);
            }
        }
     
        public static void createStatement() {
            try {
                Class.forName(dbdriver);
                conn = DriverManager.getConnection(url, username, password);
                st = conn.createStatement();
            } catch (Exception e) {
                System.err.println("Got an exception! ");
                e.printStackTrace();
                System.exit(0);
            }
        }
     
        // Drop table if exists
        public static void droptable(String sql) {
            try {
                createStatement();
                st.executeUpdate(sql);
            } catch (Exception e) {
            }
        }
     
        public static void checkData(String sql) {
            String[] starray = sql.split(" ");
            System.out.println("\n******** Table: " + starray[starray.length-1]  + " *******");
            try {
                createStatement();
                ResultSet r = st.executeQuery(sql);
                HibernateUtil.outputResultSet(r);
    //            conn.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
     
        public static void outputResultSet(ResultSet rs) throws Exception{
            ResultSetMetaData metadata = rs.getMetaData();
     
            int numcols = metadata.getColumnCount();
            String[] labels = new String[numcols];
            int[] colwidths = new int[numcols];
            int[] colpos = new int[numcols];
            int linewidth;
     
            linewidth = 1;
            for (int i = 0; i < numcols; i++) {
                colpos[i] = linewidth;
                labels[i] = metadata.getColumnLabel(i + 1); // get its label
                int size = metadata.getColumnDisplaySize(i + 1);
                if (size > 30 || size == -1)
                    size = 30;
                int labelsize = labels[i].length();
                if (labelsize > size)
                    size = labelsize;
                colwidths[i] = size + 1; // save the column the size
                linewidth += colwidths[i] + 2; // increment total size
            }
     
            StringBuffer divider = new StringBuffer(linewidth);
            StringBuffer blankline = new StringBuffer(linewidth);
            for (int i = 0; i < linewidth; i++) {
                divider.insert(i, '-');
                blankline.insert(i, " ");
            }
            // Put special marks in the divider line at the column positions
            for (int i = 0; i < numcols; i++)
                divider.setCharAt(colpos[i] - 1, '+');
            divider.setCharAt(linewidth - 1, '+');
     
            // Begin the table output with a divider line
            System.out.println(divider);
     
            // The next line of the table contains the column labels.
            // Begin with a blank line, and put the column names and column
            // divider characters "|" into it. overwrite() is defined below.
            StringBuffer line = new StringBuffer(blankline.toString());
            line.setCharAt(0, '|');
            for (int i = 0; i < numcols; i++) {
                int pos = colpos[i] + 1 + (colwidths[i] - labels[i].length()) / 2;
                overwrite(line, pos, labels[i]);
                overwrite(line, colpos[i] + colwidths[i], " |");
            }
            System.out.println(line);
            System.out.println(divider);
     
            while (rs.next()) {
                line = new StringBuffer(blankline.toString());
                line.setCharAt(0, '|');
                for (int i = 0; i < numcols; i++) {
                    Object value = rs.getObject(i + 1);
                    if (value != null){
                        overwrite(line, colpos[i] + 1, value.toString().trim());
                        overwrite(line, colpos[i] + colwidths[i], " |");
                    }
                }
                System.out.println(line);
            }
            System.out.println(divider);
     
        }
     
        static void overwrite(StringBuffer b, int pos, String s) {
            int len = s.length();
            for (int i = 0; i < len; i++)
                b.setCharAt(pos + i, s.charAt(i));
        }
     
    }
    Fichier hibernate.cfg.xml dans package checkauthentication et <default package>
    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
    <?xml version="1.0" encoding="utf-8"?>
     
    <!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD//EN"
        "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
    <hibernate-configuration>
        <session-factory>
            <!-- Database connection settings -->
            <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
            <property name="connection.url">jdbc:mysql://localhost:3306/passwords</property>
            <property name="connection.username">root</property>
            <property name="connection.password">root</property>
     
            <!-- JDBC connection pool (use the built-in) -->
            <property name="connection.pool_size">1</property>
     
            <!-- SQL dialect -->
            <property name="dialect">org.hibernate.dialect.MySQLInnoDBDialect</property>
     
            <!-- Echo all executed SQL to stdout -->
            <property name="show_sql">false</property>
     
            <!-- Mapping files -->
            <mapping resource="Pass.hbm.xml"/>
        </session-factory>
    </hibernate-configuration>

  17. #17
    Membre Expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Par défaut
    Salut,

    déjà dans ttt()

    au lieu de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
            // Create SessionFactory and Session object
            SessionFactory sessions = new Configuration().configure().buildSessionFactory();
            Session session = sessions.openSession();
    mets
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Session session = HibernateUtil.currentSession();

  18. #18
    Membre Expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Par défaut
    Il aurait fallu un Package Hibernate contenant le HibernateUtil.java et les fichier de conf x.hbm.xml

    En dernier l'appel aux méthodes dropTable et setUp sont après l'ouverture de la session

  19. #19
    Membre averti
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2006
    Messages : 54
    Par défaut
    J'ai une erreur quand je lance tomcat :
    4 déc. 2008 11:01:08 org.apache.catalina.core.StandardWrapperValve invoke
    GRAVE: "Servlet.service()" pour la servlet jsp a généré une exception
    org.hibernate.MappingNotFoundException: resource: Pass.hbm.xml not found
    Il me dit ça par rapport au fichier HibernateUtil.java, pourtant ils sont dans le même package qui est checkauthentication !

  20. #20
    Membre Expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Par défaut
    manque hibernate.cfg.xml

    en plus je crois que dans to mapping de pass, manque pour l'id:
    column="id"

Discussions similaires

  1. [log4j] Doublons lors de l'appel d'un servlet depuis un jsp
    Par jokerparis dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 29/03/2007, 15h09
  2. Appel servlet depuis JSP
    Par shaun_the_sheep dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 07/07/2006, 13h50
  3. Appel d'une methode java dans un fichier jsp
    Par kodo dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 06/05/2006, 13h46
  4. Liveconnect avec Opera 8.5 (appel Java depuis JavaScript)
    Par Gregory3000 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 13/10/2005, 08h32
  5. [Info] Appeler une fonction Ada95 depuis Java
    Par mmathieu dans le forum API standards et tierces
    Réponses: 6
    Dernier message: 15/09/2005, 09h42

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