Code connection à la BD java EE

Résolu
Aminax Messages postés 81 Date d'inscription   Statut Membre Dernière intervention   -  
Aminax Messages postés 81 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

s'il vous plait est ce qu'on peut implémenter le code de connection à la base de donnée ( avec une sevlet) au niveau de la fonction init() et au même temps l'utiliser par exemple pour tester si un login et password existe dans la base au niveau de la fonction doPost() et mercii d'avance
A voir également:

2 réponses

KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
Bonsoir,

Dans l'architecture n-tiers de Java EE, la base de données ne devrait jamais être manipulée directement par la servlet. Il faut passer par une couche métier intermédiaire.

Architecture J2EE

Pour faire ça bien, regarde donc comment fonctionne les EJB 3 (Enterprise Java Bean), en particulier les EJB Entity et donc la JPA (Java Persistence API).

Remarque : cela va nécessiter de passer d'un WAR à un EAR et donc d'utiliser un vrai serveur Java EE (par opposition à Tomcat qui n'est qu'un conteneur de servlet).

Sinon, oui tu peux faire ta connexion à la base de donnée (ou l'instanciation de ton EJB) dans la méthode init(), sans oublier de la fermer dans le destroy().
0
Aminax Messages postés 81 Date d'inscription   Statut Membre Dernière intervention  
 
donc j'ouvre le try { class.formName("com.mysql.jdbc.Driver") connection con = driverManager..... dans la methode init() et je fais ma manipulation dans doPost le fait de faire par exemple : statement st = con.creatStatement();
st.executeQuery("select * from table) ..... et je la ferme dans destroy c'est ça non ! ^^"
0
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
Ce n'est pas dans l'esprit Java EE, mais ça fonctionnera.

Attention par contre à ne pas oublier les super.
De plus le class.forName n'est utile qu'une fois, son seul but est d'appeler le bloc static de la classe, il serait donc logique de le mettre dans ton bloc statique aussi.

public class JdbcHttpServlet extends HttpServlet
{
    private static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";

    static
    {
        try
        {
            Class.forName(JDBC_DRIVER);
        }
        catch (ClassNotFoundException e)
        {
            throw new LinkageError(e);
        }
    }

    @Override
    public void init()
    {
        super.init();
        ...
    }

    @Override
    public void destroy()
    {
        super.destroy();
        ...
    }
}
0
Aminax Messages postés 81 Date d'inscription   Statut Membre Dernière intervention  
 
ah ok merci beaucoup KX o/ et Bonne soirée !
0