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 :

probleme avec RequestDispatcher


Sujet :

Servlets/JSP Java

  1. #1
    Membre à l'essai
    Inscrit en
    Février 2009
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 40
    Points : 18
    Points
    18
    Par défaut probleme avec RequestDispatcher
    Bonjour

    Apres quelques recherche non fructueuse au sujet du RequestDispatcher
    j'ai décidé de poster un message

    j'ai une page jsp avec un formulaire ,depuis celle-ci jenvois des informations "dateDebut" et "dateFin" sur ma servlet
    jusque la tous va bien j'arrive a a afficher toutes les valeur correspondant au jour sour forme de tableau .
    Mais problème je voudrai enlever tous le code html de la servlet en utilisant une redirection , mais je ne sais pas comment passer le paramètre "rs" correspondant a la requête (voir code ) .
    je vous remercie d'avance de votre aide , je rappel que je suis un débutant !
    @+
    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
     
    import java.io.IOException;
    import java.io.PrintWriter;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
     
     
    /**
     *
     * @author j.balaramane
     */
    public class Tmensuelle extends HttpServlet {
     
       protected void processRequest(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
            response.setContentType("text/html;charset=UTF-8");
     
       }
     
     protected void doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
            processRequest(request, response);
      PrintWriter out = response.getWriter();
     
     
            Connection cnx = null;
            Statement  st= null;
            try {
              String dateDeb = request.getParameter("dateDebut");
              String dateFin = request.getParameter("dateFin");
     
              Class.forName("com.mysql.jdbc.Driver");
              String url = "jdbc:mysql://localhost/solar";
              cnx=DriverManager.getConnection(url,"root","");
              st=cnx.createStatement();
              ResultSet rs= st.executeQuery("select date,heure,tension," +
                      "intensite,puissance from solaire where date between '"+dateDeb+"' and '"+dateFin+"'");
     
     
                out.println("<html>");
                out.println("<head>");
                out.println("<title>Affichage de la base de données solaire</title>");
                out.println("</head>");
                out.println("<body><center>");
                out.println("<table border='3'>");
                out.println("<h1><center>Base de Données Solaire</center></h1>");
                out.println("<th>Date</th><th>Heure</th>" +
                        "<th>Tension</th><th>Intensité</th><th>Puissance</th>");
     
                while(rs.next() ){
     
     
                    String bddate= rs.getString("date");
                    String bdheure= rs.getString("heure");
                    String bdtension= rs.getString("tension");
                    String bdintensite= rs.getString("intensite");
                    String bdpuissance= rs.getString("puissance");
     
     
                    out.println("<tr>");
                    out.println("<td>"+bddate+"</td><td>"+bdheure+
                            "</td><td>"+bdtension+"</td><td>"+bdintensite+"</td>" +
                            "<td>"+bdpuissance+"</td>");
                    out.println("</tr>");
     
                }
                     out.println("</tr>");
                    out.println("</table>");
                    out.println("</body>");
                    out.println("</html>");
                   // javax.swing.JOptionPane.showMessageDialog(null,"élèment charger");
            }
     
            catch(ClassNotFoundException e)
            {
                 javax.swing.JOptionPane.showMessageDialog(null,"Probleme de driver ");
     
                out.println(e.getMessage());
            }
            catch(SQLException e)
            {
                out.println(e.getMessage());
     
            }
    //instrucion executée dans tous les cas,qu'il y ait une exception ou pas
            {
                //fermeture du testment
                if(st!= null)
                {
                    try
                    {
                        st.close();
                    }
                    catch(SQLException e1){
                        e1.printStackTrace();
                    }
                }
     
     
                    }
            //fermeture de la connexion à la base de donées
            if(cnx!=null)
            {
                try
                {
                    cnx.close();
                }
                catch(SQLException e1)
                {
                    e1.printStackTrace();
                }
     
                }
            }
     
     }

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 142
    Points : 153
    Points
    153
    Par défaut
    Tu dois envoyer ton objet rs en tant qu'Attribut de l'objet request:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    request.setAttribute("myRs", rs);
    Puis, dans la JSP, tu récupères ton objet:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ResultSet rs = (ResultSet)request.getAttribute("myRs");
    (L'objet request est automatiquement accessible dans la JSP )

  3. #3
    Expert éminent

    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
    Points : 7 778
    Points
    7 778
    Par défaut
    Ce n'est pas le ResultSet qu'il faut passer dans la requête mais plutôt une collection d'objets.

    Tu crées une classe Solaire avec pour propriétés date,heure,tension,intensite et puissance, et les getters et setters correspondant.

    Ensuite, dans la servlet, lorsque tu traites le résultat de la requête sql, tu constitues une collection d'objets Solaire par exemple comme ceci :
    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
    List solaireList = new ArrayList() ;
    Solaire solaire = null ;
     
    while( rs.next() )
    {
                     solaire = new Solaire() ;
     
                     solaire.setDate(rs.getString("date"));
                     solaire.setHeure(rs.getString("heure"));
                     solaire.setTension(rs.getString("tension"));
                     solaire.setIntensite(rs.getString("intensite"));
                     solaire.setPuissance(rs.getString("puissance"));
     
                     solaireList.add(solaire) ;
    }
    tu mets la collection dans le scope request :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    request.setAttribute("solaireList",solaireList);
    puis tu fais un forward vers la jsp comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    RequestDispatcher disp=getServletContext().getRequestDispatcher("/nomDeTaJsp.jsp");
    disp.forward(request,response) ;
    et enfin, tu affiches le contenu de la collection d'objets dans la jsp comme ceci :
    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
    <%@ page import="java.util.*,nomdupackage.Solaire"%>
     
    <jsp:useBean id="solaireList" scope="request" type="java.util.List"/>
     
    <html>
            <head>
                 <title>Affichage de la base de données solaire</title>
            </head>
            <body><center>
            <h1><center>Base de Données Solaire</center></h1>
     
    	<table border=3>
    	<tr>
    		<th>Date</th>
    		<th>Heure</th>
    		<th>Tension</th>
    		<th>Intensité</th>
    		<th>Puissance</th>
    	</tr>
    	<%      Iterator it = solaireList.listIterator() ;
                    while (it.hasNext())
                    {
                            Solaire solaire=(Solaire) it.next() ;
            %>
    	<tr>
    		<td><%=solaire.getDate()%></td>
    		<td><%=solaire.getHeure()%></td>
    		<td><%=solaire.getTension()%></td>			
    		<td><%=solaire.getIntensite()%></td>		
    		<td><%=solaire.getPuissance()%></td>			
    	<%      }
            %>
    	</table>
            </body>
    </html>

  4. #4
    Membre à l'essai
    Inscrit en
    Février 2009
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 40
    Points : 18
    Points
    18
    Par défaut
    Merci de votre reponse qui m'a vraiment bien remis les idées en place!

    j'ai fait tous ce que vous avez dit , mais j'ai quelque erreur au niveau du jsp plus précisément au niveau de la boucle de l'iterator
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <%      Iterator it = donneesList.listIterator() ;
                    while (it.hasNext())
                    {
                            Donnees solaire=(Donnees) it.next() ;
            %>
    faut-il faire des import de classe special?

    voici les erreurs


    Exception

    org.apache.jasper.JasperException: PWC6033 : compilation de la classe pour JSP impossible

    PWC6197 : une erreur s'est produite à la ligne : 30 dans le fichier jsp : /courante.jsp
    PWC6199 : erreur de servlet générée :
    string:///courante_jsp.java:79: cannot find symbol
    symbol : class Iterator
    location: class org.apache.jsp.courante_jsp

    PWC6197 : une erreur s'est produite à la ligne : 30 dans le fichier jsp : /courante.jsp
    PWC6199 : erreur de servlet générée :
    string:///courante_jsp.java:79: cannot find symbol
    symbol : variable donnesList
    location: class org.apache.jsp.courante_jsp

    merci @+

  5. #5
    Expert éminent

    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
    Points : 7 778
    Points
    7 778
    Par défaut
    Effectivement, dans mon exemple, les import ne sont pas complets.

    Mets l'import suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <%@ page import="java.util.*"%>
    sinon, pour l'autre message, il semblerait que tu aies fait une erreur dans le nom de la collection quelque part : donnesList au lieu de donneesList.

  6. #6
    Membre à l'essai
    Inscrit en
    Février 2009
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 40
    Points : 18
    Points
    18
    Par défaut
    merci beaucoup !

    Maintenant j'ai une autre question , avec les valeur présente dans le tableau je doit être en mesure de les exporter en format PDF et excel
    Sur ce problème je n'ai vraiment aucune idées de la démarche à suivre
    si vous avez quelque chose à me proposer je suis preneur

    On ma dit qu'il fallait pour cela stocker les infos dans un lien cacher ou je sais plus trop comment sa s'appelle.(seule indication que j'ai )

    merci @+

  7. #7
    Expert éminent

    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
    Points : 7 778
    Points
    7 778
    Par défaut
    Pour les PDF, il existe par exemple iText et pour Excel, JExcel.

    Il existe des discussions à ce sujet sur le sous-forum Documents.

  8. #8
    Membre à l'essai
    Inscrit en
    Février 2009
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 40
    Points : 18
    Points
    18
    Par défaut
    Bonjour

    je voudrais afficher le tableau avec le displaytag et non avec des balise <table>
    car le composant displaytag me permettra non seulement d'afficher la table de façon plus esthétique et en plus la possibilité de l'exporter en différent format

    Mais c'est la que j'ai un probleme voici ce que je vien de coder:
    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
    <%@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.List,modele.jsp.Donnees"%>
    <%@ page import="java.util.*"%>
     
    <jsp:useBean id="donneesList" scope="request" type="java.util.List"/>
     
     
    <jsp:scriptlet> request.setAttribute( "donneesList", new donneesList(10, false) ); </jsp:scriptlet>
     <h2>Data exporting</h2>
     
      <display:table name="donneesList" export="true" id="donneesList">
        <display:setProperty name="export.rtf.filename" value="example.rtf"/>
        <display:column property="date" title="ID" />
        <display:column property="heure" />
        <display:column property="puissance" />
        <display:column property="intensité" media="csv excel xml pdf" title="Not On HTML" />
        <display:column property="date" />
     
        </display:column>
     
        <display:column media="csv excel" title="URL" property="url" />
        <display:setProperty name="export.pdf" value="true" />
      </display:table>
    type d'erreur
    org.apache.jasper.JasperException: PWC6033 : compilation de la classe pour JSP impossible

    PWC6197 : une erreur s'est produite � la ligne : 17 dans le fichier jsp : /journaliere2.jsp
    PWC6199 : erreur de servlet g�n�r�e :
    string:///journaliere2_jsp.java:66: cannot find symbol
    symbol : class donneesList
    location: class org.apache.jsp.journaliere2_jsp
    je n'arrive pas a afficher le tableau , je ne comprend pas non plus comment sont passé les résultats de la requete , et aussi au niveau des imports , j'ai cherché dans plusieurs post mais en vain pouvez-vouz m'aider!
    Merci!!@+++

  9. #9
    Expert éminent

    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
    Points : 7 778
    Points
    7 778
    Par défaut
    Je n'utilise pas DisplayTag mais si donneesList est mise dans le scope request dans l'Action qui s'exécute avant l'affichage de la page, il ne faut pas coder ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <jsp:useBean id="donneesList" scope="request" type="java.util.List"/>
     
     
    <jsp:scriptlet> request.setAttribute( "donneesList", new donneesList(10, false) ); </jsp:scriptlet>
    mais juste ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     <display:table name="donneesList" export="true">
    ...
    Pour plus d'infos, voir ce tutoriel.

  10. #10
    Membre à l'essai
    Inscrit en
    Février 2009
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 40
    Points : 18
    Points
    18
    Par défaut
    J'ai fait comme vous avez dit et j'ai cette erreur generer:
    Exception

    javax.servlet.ServletException: java.lang.AbstractMethodError: gnu.xml.dom.DomDocument.setDocumentURI(Ljava/lang/StringV

    Cause racine

    java.lang.AbstractMethodError: gnu.xml.dom.DomDocument.setDocumentURI(Ljava/lang/StringV
    Jai coder ceci :
    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
    <%@ page import="java.util.List,modele.jsp.Donnees"%>
    <%@ page import="java.util.*"%>
    <%@ taglib uri="http://displaytag.sf.net" prefix="display" %>
    <jsp:useBean id="donneesList" scope="request" type="java.util.List"/>
     
     <h2>Data exporting</h2>
     
      <display:table name="donneesList" export="true" id="donneesList">
        <display:setProperty name="export.rtf.filename" value="example.rtf"/>
        <display:column property="date" title="ID" />
        <display:column property="heure" />
        <display:column property="puissance" />
        <display:column property="intensité" media="csv excel xml pdf" title="Not On HTML" />
        <display:column property="date" />
        <display:column media="csv excel" title="URL" property="url" />
        <display:setProperty name="export.pdf" value="true" />
      </display:table>
    Merci de m'aider , car j'ai parcourue tous le net pour trouver un exemple assez explicite ,mais pas de resultat,sinon connaissez-vouz une personne qui pourrais m'aider sur ce forum?
    @+

  11. #11
    Expert éminent

    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
    Points : 7 778
    Points
    7 778
    Par défaut
    As-tu copié sous WEB-INF/lib les jars itext.jar et displaytag-export-poi.jar comme indiqué dans le tutoriel ?

  12. #12
    Membre à l'essai
    Inscrit en
    Février 2009
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 40
    Points : 18
    Points
    18
    Par défaut
    oui tout à fait je travail sous netbean6.5 et j'ai mis tous les jar dans la librarie. j'ai remarquer que dès que j'insere cette ligne dans la jsp ,j'ai un message rouge sous la fenêtre des codes, je vais essayer de faire un nouveau projet , et je vous tien au courant
    <%@ taglib uri="http://displaytag.sf.net" prefix="display" %>
    merci

  13. #13
    Membre à l'essai
    Inscrit en
    Février 2009
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 40
    Points : 18
    Points
    18
    Par défaut
    bonjour je crois bien que j'ai un probleme avec les import displaytag
    comme je l'ai dit dans le precedent post l'orsque je met la ligne
    <%@ taglib uri="http://displaytag.sf.net" prefix="display" %>
    il y a ce message en rouge qui apparait mais que je ne comprend pas, j'ai fait une capture d'écran pour que cela soit plus claire , vous pouvez regarder que les jar y sont et aussi regarder le message qui s'affiche en bas de la fenêtre du code.
    merci
    Images attachées Images attachées  

  14. #14
    Membre à l'essai
    Inscrit en
    Février 2009
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 40
    Points : 18
    Points
    18
    Par défaut
    bonjour

    j'ai réussi a afficher la table malgré le message en rouge qui est toujours visible , cependant dans mon tableau je n'ai ni couleur , ni seperateur entre les différente colonne, sur le tutoriel que vous m'avez donner les couleur y sont dès le première exemple
    si vous pouvez m'éclairer merci

    voici un aperçue de ma page:
    Images attachées Images attachées  

  15. #15
    Membre à l'essai
    Inscrit en
    Février 2009
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 40
    Points : 18
    Points
    18
    Par défaut
    c'est bon j'ai réussi a faire mettre la couleur j'ai fait une feuille de style!
    Mais j'ai un autre probleme c'est au sujet de l'export => quand j'exporte en pdf ou excel je n'ai que les entete des colonnes dans le document generer
    je ne vois vraiment pas d'où peut venir ce problème

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. probleme de requestDispatcher avec ie
    Par felix79 dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 29/03/2007, 12h52
  2. Probleme avec la copie des surfaces
    Par Black_Daimond dans le forum DirectX
    Réponses: 3
    Dernier message: 09/01/2003, 11h33
  3. probleme avec la touche F10
    Par b.grellee dans le forum Langage
    Réponses: 2
    Dernier message: 15/09/2002, 23h04
  4. Probleme avec fseek
    Par Bjorn dans le forum C
    Réponses: 5
    Dernier message: 04/08/2002, 08h17
  5. [Kylix] probleme avec un imagelist
    Par NicoLinux dans le forum EDI
    Réponses: 4
    Dernier message: 09/06/2002, 00h06

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