Bonsoir tout le monde,
Je travaille actuellement sur un projet JEE et je bloque sur l'utilisation des servlets.
Pour faire bref, mon projet est divisé selon le modèle MVC, j'utilise 4 paquets: MODELE, METIER, DAO(l'accès à la BD), et PRESENTATION(pour les servlets).
eb bref, j'ai une page jsp, pour l'authentification d'un auteur, celle là fait appel à la servlet qui devra faire appel à la classe du paquet DAO pour verifier le mot de passe et login, puis me rediriger soit vers ma page d'acceuil, soit vers une page d'erreur.
Bon, je vous passe mes classes et servlet espérant que vous puissiez m'aider
Code : Sélectionner tout - Visualiser dans une fenêtre à part IAuteurDAO
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15package pfe.cms.dao; import java.sql.Connection; import java.sql.SQLException; import java.util.Collection; import pfe.cms.model.Auteur; public interface IAuteurDAO extends IMembreDAO{ public Auteur retrieve(long codeAuteur); public Collection<Auteur> getListeAuteur()throws SQLException; public void getArt_Auteur(Auteur auteur,Connection con)throws SQLException; }
Code : Sélectionner tout - Visualiser dans une fenêtre à part OracleAuteurDAO
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 package pfe.cms.dao.oracle; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList; import java.util.Collection; import java.util.List; import pfe.cms.dao.AbstractDataBaseDAO; import pfe.cms.dao.IAuteurDAO; import pfe.cms.dao.IRubriqueDAO; import pfe.cms.model.Article; import pfe.cms.model.Auteur; import pfe.cms.model.Rubrique; public class OracleAuteurDAO extends AbstractDataBaseDAO implements IAuteurDAO{ @Override public Auteur retrieve(long codeAuteur) { Connection con=null; Auteur auteur=null; try{ con=ds.getConnection(); Statement stmt=con.createStatement(); ResultSet res=stmt.executeQuery("select * " + "from Auteur where id_Auteur="+codeAuteur); if(res.next()){ auteur=new Auteur(codeAuteur,res.getString("nom_auteur"),res.getString("nom_prenom"),res.getString("adr_auteur"),res.getString("mail_auteur"),res.getString("login_auteur"),res.getString("pw_auteur")); getArt_Auteur(auteur, con);//pr avoir la liste des articles?? } }catch(SQLException ex){ System.out.println("pb d'accés au données à l'Auteur:"+codeAuteur+" "+ex); }finally{ closeConnection(con); } return auteur; } @Override public int AddMembre(String nom, String prenom, String adr, String mail, String login, String pw) { Connection con=null; try{ con=ds.getConnection(); Statement stmt=con.createStatement(); int res=stmt.executeUpdate("insert into auteur(nom_auteur,prenom_auteur,adr_auteur,mail_auteur,login_auteur,pw_auteur)values('"+nom+"','"+prenom+"','"+adr+"','"+login+"','"+pw+"')"); return res; }catch(SQLException ex){ System.out.println("pb d'insertion "+ex); return 0; }finally{ closeConnection(con); } } @Override public void modifyMembre(long codeAuteur, String nom, String prenom, String adr, String mail, String login, String pw) { Connection con=null; try{ con=ds.getConnection(); Statement stmt=con.createStatement(); stmt.execute("update Auteur set nom_auteur='"+nom+"',prenom_auteur='"+prenom+"',adr_atueur='"+adr+"',mail_auteur='"+mail+"',login_auteur='"+login+"',pw_auteur='"+pw+"' where id_auteur="+codeAuteur); }catch(SQLException ex){ System.out.println("Modification: pb d'accés au données de l'Auteur :"+codeAuteur+" "+ex); }finally{ closeConnection(con); } } @Override public void deleteMembre(long codeAuteur) { Connection con=null; try{ con=ds.getConnection(); Statement stmt=con.createStatement(); stmt.execute("delete from Auteur where id_auteur="+codeAuteur); }catch(SQLException ex){ System.out.println("Suppression: pb d'accés au données de l'Auteur :"+codeAuteur+" "+ex); }finally{ closeConnection(con); } } @Override public Collection<Auteur> getListeAuteur() throws SQLException { Connection con=null; List<Auteur> auteurs = new ArrayList<Auteur>(); try{ con=ds.getConnection(); Statement stmt=con.createStatement(); ResultSet res=stmt.executeQuery("select id_auteur from Auteur"); while(res.next()){ auteurs.add(retrieve(res.getLong(1))); } return auteurs; }finally{ closeConnection(con); } } @Override public void getArt_Auteur(Auteur auteur, Connection con) throws SQLException { Statement stm=con.createStatement(); ResultSet rs=stm.executeQuery("select * from Article where id_auteur="+auteur.getId_membre()); while(rs.next()){ if(auteur.taille==auteur.compteur_tab_art){ Article temps[]=new Article[auteur.taille]; System.arraycopy(auteur.tab_arts, 0, temps, 0, auteur.taille); auteur.taille+=20; auteur.tab_arts=new Article[auteur.taille]; System.arraycopy(temps, 0,auteur.tab_arts, 0, auteur.taille); } IRubriqueDAO rubDAO=new OracleRupriqueDAO(); Rubrique rub=rubDAO.retrieve(rs.getLong("id_rub")); boolean etat=("A".equalsIgnoreCase(rs.getString("etat"))); boolean mur=("O".equalsIgnoreCase(rs.getString("mur"))); auteur.tab_arts[auteur.compteur_tab_art++]=new Article(rs.getLong("id_art"),rs.getString("titre"),rs.getString("contenu"), auteur, rub,etat,mur); } } @Override public boolean retrieve(String login, String pw)throws SQLException{ Connection con=null; try{ con=ds.getConnection(); Statement stmt=con.createStatement(); ResultSet res=stmt.executeQuery("select login_auteur,pw_auteur from Auteur where login_auteur='"+login+"'"); if(login.equals(res.getString("login_auteur")) && pw.equals(res.getString("pw_auteur"))){ return true; } else return false; }finally{ closeConnection(con); } } }
Code : Sélectionner tout - Visualiser dans une fenêtre à part AuteurMetier
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
56package pfe.cms.metier; import java.sql.Connection; import java.sql.SQLException; import java.util.Collection; import javax.sql.DataSource; import pfe.cms.dao.DataSourceDeTest; import pfe.cms.dao.IAuteurDAO; import pfe.cms.dao.oracle.OracleAuteurDAO; import pfe.cms.model.Auteur; public class AuteurMetier implements IAuteurMetier{ DataSource ds=new DataSourceDeTest("system","ijlal"); IAuteurDAO dao=new OracleAuteurDAO(); public AuteurMetier() { dao.setDataSource(ds); } @Override public Auteur retrieve(long codeAuteur) { return dao.retrieve(codeAuteur); } @Override public Collection<Auteur> getListeAuteur() throws SQLException { return dao.getListeAuteur(); } @Override public int AddMembre(String nom, String prenom, String adr, String mail, String login, String pw) { return dao.AddMembre(nom, prenom, adr, mail, login, pw); } @Override public void modifyMembre(long codeMembre, String nom, String prenom, String adr, String mail, String login, String pw) { dao.modifyMembre(codeMembre, nom, prenom, adr, mail, login, pw); } @Override public void deleteMembre(long codeMembre) { dao.deleteMembre(codeMembre); } @Override public boolean retrieve(String login, String pw) throws SQLException { return dao.retrieve(login, pw); } }
Code : Sélectionner tout - Visualiser dans une fenêtre à part IAuteurMetier
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14package pfe.cms.metier; import java.sql.Connection; import java.sql.SQLException; import java.util.Collection; import pfe.cms.model.Auteur; public interface IAuteurMetier extends IMembreMetier{ public Auteur retrieve(long codeAuteur); public Collection<Auteur> getListeAuteur()throws SQLException; }
Code : Sélectionner tout - Visualiser dans une fenêtre à part Auteuret enfin la servlet:
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 package pfe.cms.model; public class Auteur extends Membre{ public Article tab_arts[]; public int taille=20; public int compteur_tab_art=0; public Auteur(long id_membre, String nom, String prenom, String adr, String mail, String login, String pw) { super(id_membre, nom, prenom, adr, mail, login, pw); this.tab_arts=new Article[taille]; } public Auteur(String nom, String prenom, String adr, String mail, String login, String pw) { super(nom, prenom, adr, mail, login, pw); this.tab_arts=new Article[taille]; } }
Code : Sélectionner tout - Visualiser dans une fenêtre à part Auteur_TableauDeBord
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 package pfe.cms.presentation; import java.io.IOException; import java.io.PrintWriter; import java.sql.SQLException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import pfe.cms.metier.AuteurMetier; import pfe.cms.metier.IAuteurMetier; public class Auteur_TableauDeBord extends HttpServlet { private static final long serialVersionUID=1L; IAuteurMetier metier = new AuteurMetier(); @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String login = request.getParameter("aut_log"); String pw = request.getParameter("aut_pw"); try { if(metier.retrieve(login,pw)) { request.getRequestDispatcher("/vues/Auteur_TableauDeBord.jsp").forward(request, response); } else{ request.getRequestDispatcher("/vues/ErreurAuthentification.jsp").forward(request, response); } } catch (SQLException ex) { System.out.println(ex.getMessage()); } } @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request, response); } @Override public String getServletInfo() { return "Short description"; } }
Sachant que la servlet marche à merveille si j'enlève cette déclaration:
avant même que j'ajoute l'accès à la base de données via
Code : Sélectionner tout - Visualiser dans une fenêtre à part IAuteurMetier metier = new AuteurMetier();donc j'imagine que l'erreur est quelque part dans les classes mais j'arrive vraiment as à la trouver, je m'y perds depuis 3jours
Code : Sélectionner tout - Visualiser dans une fenêtre à part if(metier.retrieve(login,pw))
oups j'ai oublié de mentionner l'erreur.... euuu en fait il n'y a pas d'erreur, tout simplement quand je rentre le login et le mot de passe et je valide j'obtient une page blanche sans la moindre erreur et l'url est:
Merci pour toutes réponses
Code : Sélectionner tout - Visualiser dans une fenêtre à part http://localhost:19520/TestPFE4/Auteur_TableauDeBord
Partager