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

Spring Java Discussion :

Afficher liste produit sur page JSP


Sujet :

Spring Java

  1. #1
    Membre confirmé
    Inscrit en
    Février 2011
    Messages
    77
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 77
    Par défaut Afficher liste produit sur page JSP
    Bonjour,

    Je suis débutant en java.
    J'essaye d'afficher une liste de produit dans ma page jsp et ce, depuis mon servlet.
    Mon code est le suivant..

    J'ai crée une class Product :
    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
     
    public class Product {
     
       private int productId;
       private String id_cate;
       private String id_Type;
       private String cpu;
       private String ram;
       private String hdd;
       private String bandwith;
       private double price;
     
        public Product(int productId, String id_cate, String id_Type, String cpu, String ram, String hdd, String bandwith, double price) {
            this.productId = productId;
            this.id_cate = id_cate;
            this.id_Type = id_Type;
            this.cpu = cpu;
            this.ram = ram;
            this.hdd = hdd;
            this.bandwith = bandwith;
            this.price = price;
        }
    + get /set
    Mon servlet est le suivant :

    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
     
    // Initialisation de la liste des produits
            ArrayList<Product> products = new ArrayList();
     
            // Creation d'une liste de produits
            products.add(new Product(1, "Mutualise", "Luxe", "Core i5", "2go ram", "500go", "2mo/s", 12));
            products.add(new Product(2, "Dedie", "Normal", "Core i7", "4go ram", "1to", "1mo/s", 10));
            products.add(new Product(3, "Dedie", "Mini", "Core i3", "2go ram", "500go", "1.5mo/s", 25));
            products.add(new Product(4, "Mutualise", "Normal", "Core i5", "2go ram", "750go", "2mo/s", 5));
            products.add(new Product(5, "Mutualise", "Mini", "Core i3", "2go ram", "500go", "2mo/s", 98));
            products.add(new Product(6, "Dedie", "Luxe", "Core i7", "4go ram", "500go", "2mo/s", 59));
     
            // Utiliser product dans la view Index ?
            request.setAttribute("products", products);
     
            RequestDispatcher view = request.getRequestDispatcher("index.jsp");
            view.forward(request, response);
    ma vue :
    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
     
    <%! ArrayList<Product> products; 
    products = (ArrayList<Product>) request.getAttribute("products"); %>
     
            <h3>Liste de produits</h3></br> </br>
     
            <!-- boucle => un tableau de chaque "Type" -->
            <% for (Product p : products) {%>
     
                <table class="table">
                    <thead>
                        <tr> 
                            <th class="hidden">Id</th>
                            <th>Categorie</th>
                            <th>Type</th>
                            <th>RAM</th>
                            <th>CPU</th>
                            <th>HardDisk</th>
                            <th>BandWith</th>
                            <th>Prix</th>
     
                        </tr>
                    </thead>
                    <tbody>
                        <tr>
                            <td class="hidden"> p.getId</td>
                            <td><%= p.getId_cate() %>  </td>
                            <td><%= p.getId_Type() %>  </td>
                            <td><%= p.getRam() %></td>
                            <td><%= p.getCpu() %></td>
                            <td><%= p.getHdd() %></td>
                            <td><%= p.getBandwith() %></td>
                            <td><%= p.getPrice() %></td>
     
                        </tr>       
                    </tbody>
                </table>
    Pouvez-vous me dire si je suis dans le bon ?
    Merci beaucoup de votre aide !

    Bien à vous,
    Arsenik

  2. #2
    Membre chevronné
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 312
    Par défaut
    Bonjour,

    oui tu es dans le bon.....sauf

    qu'il est déconseillé d'introduire du java dans les pages jsp. Il est recommandé d'utiliser les JSTL et EL.

  3. #3
    Membre confirmé
    Inscrit en
    Février 2011
    Messages
    77
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 77
    Par défaut
    Ah bon ?
    Je ne connais du tout JSLT...
    D'après ce que j'ai vu, je fais un foreach sur ma liste depuis le servlet ?

    Tu ferais ça comment ? :/

    Merci pr ton aide !

  4. #4
    Membre chevronné
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 312
    Par défaut
    Bonjour,

    EL et JSTL sont des moyens qui permettent de ne pas mélanger le code et l'affichage pur afin qu'un designer puisse facilement modifier des page JSP sans forcement connaitre java par exemple.

    JSTL permet d'utiliser des balises un peut comme du xml au lieu des instruction java.

    Par exemple ton code donnerait:

    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
     
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
     
            <h3>Liste de produits</h3></br> </br>
     
            <!-- boucle => un tableau de chaque "Type" -->
            <c:forEach var ="p" item="${products}">
                <table class="table">
                    <thead>
                        <tr> 
                            <th class="hidden">Id</th>
                            <th>Categorie</th>
                            <th>Type</th>
                            <th>RAM</th>
                            <th>CPU</th>
                            <th>HardDisk</th>
                            <th>BandWith</th>
                            <th>Prix</th>
     
                        </tr>
                    </thead>
                    <tbody>
                        <tr>
                            <td class="hidden"><c:out value="p.productId"/></td>
                            <td><c:out value="p.id_cate"/></td>
                            <td><c:out value="p.id_Type"/></td>
                            <td><c:out value="p.ram"/></td>
                            <td><c:out value="p.cpu"/></td>
                            <td><c:out value="p.hdd"/></td>
                            <td><c:out value="p.bandwith"/></td>
                            <td><c:out value="p.price"/></td>
                        </tr>       
                    </tbody>
                </table>
           </c:forEach>
    La première ligne peut être supprimée en configurant web.xml.

    Si tu es sur glassfish c'est integré de base,

    Et pour que ça fonctionne sur tomcat, il te faut télécharger un .jar à intégrer dans WEB-INF/lib. tu peux télécharger ici

  5. #5
    Membre confirmé
    Inscrit en
    Février 2011
    Messages
    77
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 77
    Par défaut
    Ah oui je vois mieux mnt !
    Mon code tourne, j'ai juste du ajouter un "s" a items :-)

    Cependant, aucun de mes produits ne s'affiche...
    Ne faut-il pas faire une références à la liste de produits créer dans le servlet ?

    bien à toi,
    Arsenik

  6. #6
    Membre confirmé
    Inscrit en
    Février 2011
    Messages
    77
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 77
    Par défaut
    Mon JSTL fonctionne car ceci s'affiche :-)
    <c:out value="JSTL works."></c:out>

  7. #7
    Membre chevronné
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 312
    Par défaut
    Salut, j'ai effectivement oublié ${}

    Tu peux remarquer que pour p.price je n'ai pas utilisé JSTL mais uniquement les EL. L'ajout de JSTL permet de sécuriser les infos qui viennent des utilisateurs pour éviter les failles.

    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
     
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
     
            <h3>Liste de produits</h3></br> </br>
     
            <!-- boucle => un tableau de chaque "Type" -->
            <c:forEach var ="p" item="${products}">
                <table class="table">
                    <thead>
                        <tr> 
                            <th class="hidden">Id</th>
                            <th>Categorie</th>
                            <th>Type</th>
                            <th>RAM</th>
                            <th>CPU</th>
                            <th>HardDisk</th>
                            <th>BandWith</th>
                            <th>Prix</th>
     
                        </tr>
                    </thead>
                    <tbody>
                        <tr>
                            <td class="hidden"><c:out value="p.productId"/></td>
                            <td><c:out value="${p.id_cate}"/></td>
                            <td><c:out value="${p.id_Type}"/></td>
                            <td><c:out value="${p.ram}"/></td>
                            <td><c:out value="${p.cpu}"/></td>
                            <td><c:out value="${p.hdd}"/></td>
                            <td><c:out value="${p.bandwith}"/></td>
                            <td>${p.price}</td>
                        </tr>       
                    </tbody>
                </table>
           </c:forEach>

  8. #8
    Membre confirmé
    Inscrit en
    Février 2011
    Messages
    77
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 77
    Par défaut
    Super ça et le EL, en quoi ça empêche les failles de sécurité ?

    Ceci dit, y a un point qui me chipote..
    Si je met tt le code de ma liste avec les ajouts dans la JSP, l'affichage fonctionne, et dans le servlet non....

    Je dois faire une références sur ma page JSP ?

  9. #9
    Membre chevronné
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 312
    Par défaut
    L'idée générale est de créer ta list (ici products) dans la servlets, la jsp ne servant qu'à l'affichage. Tu peux egalement acceder à products en java dans ta servlet????

  10. #10
    Membre confirmé
    Inscrit en
    Février 2011
    Messages
    77
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 77
    Par défaut
    Je soucis que j'ai c'est que cette liste de "product" ne s'affiche pas dans ma page jsp.
    Soit la liste ne s'envoie pas, soit elle n'est pas récuperée dans la jsp.

    Le request.Setattribute permet bien d'envoyer la liste dans la vue.
    Ne faut-il utilisé un bout de code pr la récupérer dans ma vue ?


    (j'avais tester de créer la liste de produit directement dans la vue afin de voir si elle s'affiche correctement, et c'est bien le cas ;-) )

  11. #11
    Membre chevronné
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 312
    Par défaut
    Salut,

    Ton code initial ne peut pas fonctionner car tu as un début de boucle d'affichage en java puis tu introduis du html et il n'y a pas de fin à ta boucle.
    Tu peux le faire comme tu proposes mais il faut inclure tout dans ta boucle et en java.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <%
    for (Product p: products) {
    out.println("<table class=\"table\">");
    ......
    out.println("<td class=\"hidden\">" +  p.getProductId + "</td>");//note le getProductId et non getId, dans les beans il faut reprendre le nom exact de la variable
    .......
     out.println("</table>");
    }
    %>
    J'ai repris ton code en y adaptant EL et jstl.

    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
    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
     
    <%@ page pageEncoding="UTF-8" %>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
    <!DOCTYPE html>
    <html>
        <head>
     
            <meta charset="UTF-8">
            <title>Affichage Produits</title>
            <link type="text/css" rel="stylesheet" href="style.css"/>
        </head>
        <body>
        <h3>Liste de produits</h3>
        <br /><br />
        <!-- boucle => un tableau de chaque "Type" -->
     
     
            <c:forEach items="${products}" var="prod" >
                <table>
            <thead>
                <tr> 
                    <th>Id</th>
                    <th>Categorie</th>
                    <th>Type</th>
                    <th>RAM</th>
                    <th>CPU</th>
                    <th>HardDisk</th>
                    <th>BandWith</th>
                    <th>Prix</th>
                </tr>
            </thead>
            <tbody>
                <tr>
                     <td> ${prod.productId}</td>
                     <td>${prod.id_cate}  </td>
                     <td>${ prod.id_Type}  </td>
                     <td>${ prod.ram}</td>
                     <td>${ prod.cpu}</td>
                     <td>${ prod.hdd}</td>
                     <td>${ prod.bandwidth}</td>
                     <td>${ prod.price}</td>
                </tr>       
            </tbody>
            </table>
            <br />
        </c:forEach>
     
        </body>
    </html>
    et 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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
    package com.sdzee.servlets;
     
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.ServletException;
    import java.io.IOException;
    import java.util.ArrayList;
    import com.sdzee.beans.Product;
     
     
    public class Produit extends HttpServlet {
     
     
     
        @Override
        protected void doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
            ArrayList<Product> products = new ArrayList();
     
            // Creation d'une liste de produits
            products.add(new Product(1, "Mutualise", "Luxe", "Core i5", "2go ram", "500go", "2mo/s", 12));
            products.add(new Product(2, "Dedie", "Normal", "Core i7", "4go ram", "1to", "1mo/s", 10));
            products.add(new Product(3, "Dedie", "Mini", "Core i3", "2go ram", "500go", "1.5mo/s", 25));
            products.add(new Product(4, "Mutualise", "Normal", "Core i5", "2go ram", "750go", "2mo/s", 5));
            products.add(new Product(5, "Mutualise", "Mini", "Core i3", "2go ram", "500go", "2mo/s", 98));
            products.add(new Product(6, "Dedie", "Luxe", "Core i7", "4go ram", "500go", "2mo/s", 59));
     
            // Utiliser product dans la view Index ?
            request.setAttribute("products", products);  
     
            request.getRequestDispatcher("index.jsp").forward(request,response);
        }
     
    }
    et le bean :

    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
     
    package com.sdzee.beans;
     
    public class Product {
     
       private int productId;
       private String id_cate;
       private String id_Type;
       private String cpu;
       private String ram;
       private String hdd;
       private String bandwidth;
       private double price;
     
        public Product(int productId, String id_cate, String id_Type, String cpu, String ram, String hdd, String bandwidth, double price) {
            this.productId = productId;
            this.id_cate = id_cate;
            this.id_Type = id_Type;
            this.cpu = cpu;
            this.ram = ram;
            this.hdd = hdd;
            this.bandwidth = bandwidth;
            this.price = price;
        }
     
        public int getProductId() {
            return productId;
        }
     
        public String getId_cate() {
            return id_cate;
        }
     
        public String getId_Type() {
            return id_Type;
        }
     
        public String getCpu() {
            return cpu;
        }
     
        public String getRam() {
            return ram;
        }
     
        public String getHdd() {
            return hdd;
        }
     
        public String getBandwidth() {
            return bandwidth;
        }
     
        public double getPrice() {
            return price;
        }
    }

Discussions similaires

  1. Caractères accentués remplacés par des '?' sur page JSP (Mysql 5)
    Par nicolaseng dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 01/03/2011, 19h50
  2. Afficher image sur page jsp depuis DB
    Par c-bolo dans le forum Servlets/JSP
    Réponses: 7
    Dernier message: 14/12/2009, 17h24
  3. Caractères accentués remplacés par des '?' sur page JSP
    Par nicolaseng dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 25/02/2008, 16h03
  4. [PHP-JS] Afficher code PHP dans page JSP
    Par metatron dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 09/08/2006, 09h36
  5. Afficher popup que sur page d'accueil !!
    Par Chronax dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 04/05/2006, 14h44

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