Bonjour,
J'essaie d'afficher une tableau via une .jsp, contenant une liste de clients qui se trouve dans une bdd mysql.
le problème est que le code html est vierge de toutes données comme vous pouvez le voir dans ce code source html créé par la page "liste_clients.jsp" :
Voici le code de ma page liste_clients.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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65 <h2>LISTE DES CLIENTS</h2> <div> <table> <tr> <th><a href="ListeCommandeServlet/nom">NOM</a></th> <th><a href="ListeCommandeServlet/prenom">PRENOM</a></th> <th>ADRESSE</th> <th>ACTIONS</th> </tr> <tr> <td></td> <td></td> <td></td> <td> <form action="ListeCommendeServlet" method="post"> <input type="hidden" name="id" value=""/> <input type="hidden" name="action" value="editer"/> <input type="submit" value="EDITER"/> </form> </td> </tr> <tr> <td></td> <td></td> <td></td> <td> <form action="ListeCommendeServlet" method="post"> <input type="hidden" name="id" value=""/> <input type="hidden" name="action" value="editer"/> <input type="submit" value="EDITER"/> </form> </td> </tr> <tr> <td></td> <td></td> <td></td> <td> <form action="ListeCommendeServlet" method="post"> <input type="hidden" name="id" value=""/> <input type="hidden" name="action" value="editer"/> <input type="submit" value="EDITER"/> </form> </td> </tr> <tr> <td></td> <td></td> <td></td> <td> <form action="ListeCommendeServlet" method="post"> <input type="hidden" name="id" value=""/> <input type="hidden" name="action" value="editer"/> <input type="submit" value="EDITER"/> </form> </td> </tr> </table> </div>
On voit bien à la ligne 21 que j'utilise les expression language pour aller chercher un ArrayList qui se nomme clients et qui contient des instances du bean "Client".
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 <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <!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=ISO-8859-1"> <title>liste des clients</title> </head> <body> <h2>LISTE DES CLIENTS</h2> <div> <table> <tr> <th><a href="ListeCommandeServlet/nom">NOM</a></th> <th><a href="ListeCommandeServlet/prenom">PRENOM</a></th> <th>ADRESSE</th> <th>ACTIONS</th> </tr> <c:forEach items="${requestScope.clients}" var="c"> <tr> <td><c:out value="${c.client_nom}"></c:out></td> <td><c:out value="${c.client_prenom}"></c:out></td> <td><c:out value="${c.client_adresse}"></c:out></td> <td> <form action="ListeCommendeServlet" method="post"> <input type="hidden" name="id" value="${c.client_id}"/> <input type="hidden" name="action" value="editer"/> <input type="submit" value="EDITER"/> </form> </td> </tr> </c:forEach> </table> </div> </body> </html>
Cet arrayList est mis dans la request par la servlet comme ceci :
Nous voyons l'initialisation de la DAOclient à la ligne 10.
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 public class ListeCommandeServlet extends HttpServlet { private static final long serialVersionUID = 1L; private DAOclient daoclient; public ListeCommandeServlet() {super();} public void init(ServletConfig config) throws ServletException { super.init(config); daoclient = (DAOclient)getServletContext().getAttribute("daoclient"); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("uri : " + request.getRequestURI()); String uri = request.getRequestURI(); String[] champs = uri.split("/"); String order = champs[champs.length - 1]; int choix = DAOclient.ORDERED_BY_DEFAULT; switch(order) { case "nom": choix = DAOclient.ORDERED_BY_NOM; break; case "prenom": choix = DAOclient.ORDERED_BY_PRENOM; break; } request.setAttribute("clients", daoclient.findAll(choix)); getServletContext().getRequestDispatcher("/liste_clients.jsp").forward(request, response); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { } }
on peut voir à la ligne 32 que je vais chercher un arrayList<Client> grâce à la méthode findAll() de l'instance daoclient.
Voici la classe DAOclient :
A la ligne 53, figure la méthode findAll() ...
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 public class DAOclient { //DECLARATIONS public static final int ORDERED_BY_DEFAULT = 0; public static final int ORDERED_BY_NOM = 1; public static final int ORDERED_BY_PRENOM = 2; public static final String FIND_ALL_SQL = "select * from `client`"; public static final String FIND_ALL_ORDERED_NOM_SQL = "select * from `client` ORDER BY `nom`"; public static final String FIND_ALL_ORDERED_PRENOM_SQL = "select * from `client` ORDER BY `prenom`"; public static final String FIND_BY_ID_SQL = "select * from `client` where `id`=?"; public static final String UPDATE_ONE_SQL = "update `client` set `nom`=?, `prenom`=?, `adresse`=? where `id`=?"; public static final String INSERT_ONE_SQL = "insert into `client` (`nom`, `prenom`, `adresse`) values (?,?,?)"; private Connection base; private java.sql.PreparedStatement findAllStatement; private PreparedStatement findAllOrderedNomStatement; private PreparedStatement findAllOrederedPrenomStatement; private PreparedStatement findByIdStatement; private PreparedStatement insertOneStatement; private PreparedStatement updateOneStatement; //CONSTRUCTEUR public DAOclient(Connection base) { this.base = base; try { findAllStatement = base.prepareStatement(FIND_ALL_SQL); findAllOrderedNomStatement = base.prepareStatement(FIND_ALL_ORDERED_NOM_SQL); findAllOrederedPrenomStatement = base.prepareStatement(FIND_ALL_ORDERED_PRENOM_SQL); findByIdStatement = base.prepareStatement(FIND_BY_ID_SQL); insertOneStatement = base.prepareStatement(INSERT_ONE_SQL); updateOneStatement = base.prepareStatement(UPDATE_ONE_SQL); } catch (SQLException e) {e.printStackTrace();} } //METHODES private Client fetchRow(ResultSet rs) { try { return new Client(rs.getInt("client_id"), rs.getString("client_nom"), rs.getString("client_prenom"), rs.getString("adresse")); } catch (SQLException e) {e.printStackTrace();} return null; } public List<Client> findAll(int orderType) { System.out.println("entrée dans findAll method"); ArrayList<Client> clients = new ArrayList<Client>(); ResultSet rs = null; PreparedStatement statement = findAllStatement; try { switch(orderType) { case ORDERED_BY_DEFAULT: findAllStatement.clearParameters(); statement = findAllStatement; break; case ORDERED_BY_NOM: findAllOrderedNomStatement.clearParameters(); statement = findAllOrderedNomStatement; break; case ORDERED_BY_PRENOM: findAllOrederedPrenomStatement.clearParameters(); statement = findAllOrederedPrenomStatement; break; } rs = statement.executeQuery(); while(rs.next()) { clients.add(fetchRow(rs)); } } catch (SQLException e) {e.printStackTrace();} finally { if (rs != null) { try { rs.close(); } catch (SQLException e) {e.printStackTrace();} } } return clients; } }
Voilà, je ne comprends donc pas pourquoi la jsp ne prépare les attributs dans le html !?! j'ai vraiment l'impression que tout est en ordre ....
Merci pour vos aides !
![]()
Partager