Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1993 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  Afficher des données sur ma page d'accueil JSP

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Afficher des données sur ma page d'accueil JSP

n°2175762
James Pink​erton
Jeune padawan...
Posté le 14-02-2013 à 15:02:37  profilanswer
 

Bonjour à tous,  
 
Je suis assez nouveau en programmation, et je programme ma première application web...  
 
J'expose donc mon problème.  
 
Lors du lancement de mon application, j'arrive sur une page Index.jsp, qui est supposée afficher des données de ma base (il s'agit d'une base de données Derby) rentrées précédemment sur une autre base.
 
Mais vu que c'est ma page d'accueil, je ne passe pas au préalable par une servlet. Y a t'il donc moyen d'aller chercher ces données directement depuis une page JSP via une requête SQL ou quelque chose comme ca ?
 
 
 
Pour voir plus clair, voila une partie du script de ma page :  
 
 

Code :
  1. <div id="intitule">
  2. <font face="Verdana" size="4" color="grey">
  3.    <a id="intitule" class="label" title="Intitule" >Intitule</a>
  4.    </font>
  5.  
  6. </div>
  7. <div id="domaine" >
  8. <font face="Verdana" size="4" color="grey">
  9.    <a id="domaine" class="label" title="domaine" >Domaine</a>
  10.    </font>
  11.  
  12. </div>
  13. <div id="statut" >
  14. <font face="Verdana" size="4" color="grey">
  15.    <a id="statut" class="label" title="statut" >Statut</a>
  16.    </font>


 
 
Donc, j'aimerai, plutôt que d'afficher le mot "Intitule" par exemple, aller piocher dans ma base derby : Intitule, dans la table PROJETS
 
De même pour Domaine, je souhaiterai afficher le Domaine, tiré de la table Projet.  
 
 
Faut il créer une connexion à la base directement dans ma page JSP ? Ou bien faut il créer une servlet qui serait appelée à je ne sais quel moment ?
 
 
 
 
 
Merci d'avance ! =) Puis bonne journée à vous


---------------
Votre vie est régie par ce que les gens attendent de vous
mood
Publicité
Posté le 14-02-2013 à 15:02:37  profilanswer
 

n°2175822
willy le k​id
Posté le 14-02-2013 à 18:12:42  profilanswer
 

Tu peux faire cela à partir du jsp, cf
http://www.java2s.com/Code/Java/JSP/Database.htm
 
Mais :
a) les bonnes pratiques disent que (en simplifiant) le codage de ton besoin se fera en :
- tu crées une datasource dans ton serveur d'application
- la servlet accède à la base de données en utilisant la datasource,
  fait la requête,  
  valorises les valeurs qui t’intéressent dans la session ou la request
  et forwarde vers le jsp
- la jsp prends les valeurs dans la request ou la session et les affiches
  rien de plus
Pas sûr que tu comprennes ceci mais  
la raison est que c'est maintenable, extensible, évolutif, robuste etc etc
a) tu vas coder ta page à l'arrache avec tes petites connaissances  
mais tu coderas de la pire des manières  
et je dirai tu vas anti-apprendre à coder et prendre de mauvaises habitudes
c) je ne sais pas quel est ton but à long terme mais si un jour tu cherches un job de développeur java tu ne pourras pas te vanter de tes petits travaux maison


Message édité par willy le kid le 14-02-2013 à 18:14:01
n°2175823
willy le k​id
Posté le 14-02-2013 à 18:16:13  profilanswer
 

Mots clefs si tu te décides à faire de la servlet : mvc servlet jsp

n°2175867
James Pink​erton
Jeune padawan...
Posté le 15-02-2013 à 09:30:49  profilanswer
 

Ok, merci beaucoup pour la réponse =)
 
Je vais essayer de suivre les bonnes pratiques ! C'est comme ca qu'on apprend.  
T'en fais pas pour mon but à long terme, je suis en stage dans une entreprise et j'essaie de leur développer une petite application, pas bien compliquée en soit, mais qui permettrait de simplifier deux trois choses
 
Merci encore  
Je te tiens au courant de mon avancement =D

n°2176597
James Pink​erton
Jeune padawan...
Posté le 20-02-2013 à 15:05:54  profilanswer
 

Bonjour !  
 
J'ai, je pense, fait tout cela désormais, mais voila, je me frotte à un autre souci maintenant... Et du coup, beh mes données ne s'affichent toujours pas =/
 
J'ai donc ma servlet qui récupère les données de la base et les stocke dans une ArrayList, données que je forwarde à ma JSP.
 
Du coté de la jsp, j'ai créé une boucle foreach, pour adapter la structure de ma page aux données présentes dans la base. Et dans cette boucle foreach, je fais un présumé appel des données forwardées. Cependant, lorsque je lance l'appli, les données sont au mieux "null", ou bien rien du tout n'est affiché (case blanche quoi)... De plus, la structure, beh je voudrais qu'elle s'adapte et qu'elle se reproduise autant de fois qu'il y à de lignes dans ma base (ce a quoi je pense que sert le foreach), mais la ligne n'apparait qu'une fois, et est vide.
 
Bon, je progresse dans le sens où avant je ne savais même pas comment fonctionnait la servlet, mais j'y suis pas encore quoi x)
 
 
Ma page Index.jsp :  
 

Code :
  1. ............Code sans importance au probleme..........
  2.     <c:forEach items="session.getAttribute('projets')" var="projets" >
  3.    
  4. <div id="intitule">
  5. <font face="Verdana" size="4" color="grey">
  6.     <% String e = (String) request.getAttribute("domaine" );
  7.     out.print(e);%>
  8.  
  9.  
  10.  
  11.  
  12.    </font>
  13. </div>
  14. <div id="domaine" >
  15. <font face="Verdana" size="4" color="grey">
  16.    <a id="domaine" class="label" title="domaine" ><%request.getAttribute("domaine" );%></a>
  17.    </font>
  18.  
  19. </div>
  20. <div id="statut" >
  21. <font face="Verdana" size="4" color="grey">
  22.    <a id="statut" class="label" title="statut" >$_Statut</a>
  23.    </font>
  24.  
  25. </div>
  26.     ......Code inintéressant......
  27.     </c:forEach>


 
J'ai même tenté le foreach avec la syntaxe suivante, sauf que cette fois, rien du tout n'apparait, même pas la structure :
 

Code :
  1. <c:forEach items="${sessionScope.AffichageIndex.projet}" var="p">


 
 
 
(Comme on peut le voir, j'ai essayé plusieurs manières différentes d'afficher ces données, rien n'y à fait)  
 
La servlet AffichageIndex.java :
 

Code :
  1. import java.io.IOException;
  2. import java.io.PrintWriter;
  3. import java.sql.Connection;
  4. import java.sql.DriverManager;
  5. import java.sql.ResultSet;
  6. import java.sql.SQLException;
  7. import java.sql.Statement;
  8. import java.util.ArrayList;
  9. import java.util.List;
  10. import javax.servlet.RequestDispatcher;
  11. import javax.servlet.ServletException;
  12. import javax.servlet.http.HttpServlet;
  13. import javax.servlet.http.HttpServletRequest;
  14. import javax.servlet.http.HttpServletResponse;
  15. import javax.servlet.http.HttpSession;
  16. import javax.xml.ws.RequestWrapper;
  17. public class AffichageIndex extends HttpServlet {
  18.   public void doGet(HttpServletRequest request,
  19.       HttpServletResponse response) throws ServletException,
  20.       IOException {
  21.     PrintWriter out = null;
  22.     Connection connection = null;
  23.     Statement statement;
  24.     ResultSet rs;
  25.     try {
  26.      Class.forName("org.apache.derby.jdbc.ClientDriver" );
  27.       connection = DriverManager
  28.           .getConnection("jdbc:derby://localhost:1527/sample;create=true","scott","tiger" );
  29.       statement = connection.createStatement();
  30.       response.setContentType("test/html" );
  31.       out = response.getWriter();
  32.       rs = statement.executeQuery("SELECT numero, statut, domaine, datecreation, datebutoire, intitule, description FROM projets" );
  33.       List<String> projet = new ArrayList<String>();
  34.       while(rs.next()){
  35.        //projets.add(rs.getString(1).toString());
  36.        //projets.add(rs.getString(2).toString());
  37.        //projets.add(rs.getString(3).toString());
  38.        //projets.add(rs.getString(4).toString());
  39.        //projets.add(rs.getString(5).toString());
  40.        //projets.add(rs.getString(6).toString());
  41.        //projets.add(rs.getString(7).toString());
  42.        projet.add(rs.getString("numero" ).toString());
  43.           projet.add(rs.getString("statut" ).toString());
  44.           projet.add(rs.getString("domaine" ).toString());
  45.           projet.add(rs.getString("datecreation" ).toString());
  46.           projet.add(rs.getString("datebutoire" ).toString());
  47.           projet.add(rs.getString("intitule" ).toString());
  48.           projet.add(rs.getString("description" ).toString());
  49.          
  50.           HttpSession session = request.getSession();   
  51.           session.setAttribute("projets", projet);
  52.           request.getRequestDispatcher("../Index.jsp" ).forward(request, response);
  53.       }
  54.  
  55.     } catch (ClassNotFoundException e) {
  56.       out.println("Driver Error" );
  57.     } catch (SQLException e) {
  58.       out.println("SQLException: " + e.getMessage());
  59.     }
  60.     finally {
  61.      try {
  62.     if (connection != null) {
  63.      connection.close();
  64.     }
  65.     }
  66.     catch (SQLException ignored){
  67.     out.println(ignored);
  68.     }
  69.     }
  70.     }
  71.  
  72.  
  73. }


 
 
Donc, la aussi, j'ai essayé plusieurs manières de récupérer les données
 
J'arrive pas a comprendre d'où pourrait venir le problème... Je commence a me taper la tête sur le clavier  
 
Merci d'avance.


Message édité par James Pinkerton le 20-02-2013 à 15:54:56
n°2177068
willy le k​id
Posté le 22-02-2013 à 13:53:48  profilanswer
 

Instrumentes ton code. a tous les niveaux possibles. ajoutes des traces. Fais des System.out (a defaut d utiliser un logger comme log4j)
 
Quand tu fais des projet.add(rs.getString("numero" ).toString());
comment es tu sur que les rs.getString... ramenent une valeur?
 
 

n°2177099
James Pink​erton
Jeune padawan...
Posté le 22-02-2013 à 15:45:08  profilanswer
 

willy le kid a écrit :

Instrumentes ton code. a tous les niveaux possibles. ajoutes des traces. Fais des System.out (a defaut d utiliser un logger comme log4j)

 

Quand tu fais des projet.add(rs.getString("numero" ).toString());
comment es tu sur que les rs.getString... ramenent une valeur?

 



 


Ok, donc j'ai modifié mon code... J'arrive désormais à récupérer les informations dans ma arrayList et à avoir un retour sur ma page JSP !
Désolé Willy, a peine tu as le temps de me répondre que j'ai déja un autre problème =s

 

Sur ma JSP, j'arrive a itérer sur les fameuses données. Ma boucle foreach modifie la structure de ma page, et varie selon le nombre d'occurrences que j'ai dans ma base. Mais au moment d'appeler les informations de ma Liste, je ne peux qu'appeler un groupe d'informations.. Je te joins mes pages et je t'explique :

 

Servlet :

Code :
  1. import java.io.IOException;
  2. import java.io.PrintWriter;
  3. import java.sql.Connection;
  4. import java.sql.Date;
  5. import java.sql.DriverManager;
  6. import java.sql.ResultSet;
  7. import java.sql.SQLException;
  8. import java.sql.Statement;
  9. import java.util.ArrayList;
  10. import java.util.List;
  11. import javax.faces.bean.ApplicationScoped;
  12. import javax.faces.bean.SessionScoped;
  13. import javax.servlet.RequestDispatcher;
  14. import javax.servlet.ServletException;
  15. import javax.servlet.http.HttpServlet;
  16. import javax.servlet.http.HttpServletRequest;
  17. import javax.servlet.http.HttpServletResponse;
  18. import javax.servlet.http.HttpSession;
  19. import javax.xml.ws.RequestWrapper;
  20. @ApplicationScoped
  21. @SessionScoped
  22. public class AffichageIndex extends HttpServlet {
  23.   public void doGet(HttpServletRequest request,
  24.       HttpServletResponse response) throws ServletException, NullPointerException,
  25.       IOException {
  26.     PrintWriter out = null;
  27.     Connection connection = null;
  28.     Statement statement;
  29.     ResultSet rs;
  30.     List<Projet> Resultat;
  31.     Resultat = new ArrayList<Projet>();
  32.     try {
  33.      Class.forName("org.apache.derby.jdbc.ClientDriver" );
  34.       connection = DriverManager
  35.           .getConnection("jdbc:derby://localhost:1527/sample;create=true","scott","tiger" );
  36.       statement = connection.createStatement();
  37.       response.setContentType("test/html" );
  38.       out = response.getWriter();
  39.       rs = statement.executeQuery("SELECT numero,intitule, statut, domaine, datecreation, datebutoire, description FROM projets" );
  40.       while(rs.next()){
  41.           int numero = rs.getInt("numero" );
  42.           String intitule = rs.getString("intitule" );
  43.           String statut = rs.getString("statut" );
  44.           String domaine = rs.getString("domaine" );
  45.           Date datecreation = rs.getDate("datecreation" );
  46.           Date datebutoire = rs.getDate("datebutoire" );
  47.           String description = rs.getString("description" );
  48.          
  49.        
  50.           Projet projet=new Projet(numero,intitule,statut,domaine,datecreation,datebutoire,description);
  51.           Resultat.add(projet);
  52.          
  53.          
  54.           HttpSession session = request.getSession();   
  55.           session.setAttribute("resultat", Resultat);
  56.          
  57.    
  58.          
  59.       }
  60.       response.sendRedirect("../Index.jsp" );
  61.       return;
  62.  
  63.     } catch (ClassNotFoundException e) {
  64.       out.println("Driver Error" );
  65.     } catch (SQLException e) {
  66.       out.println("SQLException: " + e.getMessage());
  67.     }
  68.     finally {
  69.      try {
  70.     if (connection != null) {
  71.      connection.close();
  72.     }
  73.     }
  74.     catch (SQLException ignored){
  75.     out.println(ignored);
  76.     }
  77.     }
  78.     }
  79.  
  80.  
  81. }
 


ma jsp :

 
Code :
  1. <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
  2.     pageEncoding="ISO-8859-1"%>
  3. <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
  4. <%@ page import="java.sql.*" %>
  5. <%@ page import="java.util.ArrayList" %><%@ page import="java.util.List" %>
  6. <%@page import="java.sql.*"%>
  7. <%@page import="java.util.*"%>
  8. <%@ page session="true"%>
  9. <%@page import="java.io.*"%>
  10. <%@page import="java.net.*"%>
  11. <%@page import="javax.servlet.*"%>
  12. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  13. <html>
  14. <head>
  15. <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
  16. <TITLE>Page d'accueil : Front office</TITLE>
  17.     <style type="text/css">
  18.   body {
  19.    background-position:right bottom;
  20.     background-image:url(Fond.gif);
  21.     background-attachment:fixed;
  22.     background-repeat:no repeat;
  23. }
  24.   div {
  25.     background-image:url(Banderolle-jaune-et-ombre.gif);
  26. height: 84px;
  27.     background-repeat:repeat-x;
  28.     background-position:left;
  29.     margin-top:5px;
  30.  
  31. }
  32.   a.label{
  33. margin-top:28px;
  34. }
  35.   #modifier{
  36. margin-top:30px;
  37. }
  38.   #intitule{
  39.  
  40. width:100px;
  41. text-align:center;
  42. float:left;
  43. }
  44.   #domaine{
  45. width:100px;
  46. text-align:center;
  47. float:left;
  48.   #statut{
  49. width:100px;
  50. text-align:center;
  51. float:left;
  52.   #creation{
  53. width:100px;
  54. text-align:center;
  55. float:left;
  56. }
  57.   #fin{
  58. width:100px;
  59. text-align:center;
  60. float:left;
  61. }
  62.   #description{
  63. width:186px;
  64. text-align:center;
  65. float:left;
  66. }
  67.   #derniereA{
  68. width:186px;
  69. text-align:center;
  70. float:left;
  71. }
  72.   #modifier{
  73. text-align:center;
  74. float:clear;
  75. margin-top:6px;
  76. }
  77.    </style>
  78.   </HEAD>
  79.     <body>
  80.     <font face="Stencil std" size="6" id="title" class="title" title="document title" >Front office : Liste des projets</font>   
  81.     <br></br><input id="Consulter" type="button" value="Creer un nouveau projet " onClick="javascript:document.location.href='/Suivi De Chantier v0.1/CreerProjet.jsp'" style='font-family: "Book Antiqua", "Times New Roman", Serif'/>
  82.    
  83. <br></br>
  84. <div id="intitule">
  85. <font face="Verdana" size="4" color="grey">
  86.    <a id="intitule" class="label" title="Intitule" >Intitule</a>
  87.  
  88.    </font>
  89.  
  90. </div>
  91. <div>
  92. </div>
  93.      <c:forEach items="${resultat}" var="v">
  94.    
  95. <div id="intitule">
  96. <font face="Verdana" size="4" color="grey">
  97.    <a id="intitule" class="label" title="intitule" ><c:out value="${v}"></c:out></a>
  98.    </font>
  99.  
  100. <div>
  101. <input id="modifier" type="button" value="Modifier ce projet !" onClick="javascript:document.location.href='ModifierProjet.jsp'" style='font-family: "Book Antiqua", "Times New Roman", Serif'/>
  102.     <BR></br>
  103.     <input id="Consulter" type="button" value="Consulter les actions réalisées  !" onClick="javascript:document.location.href='ConsulterProjet.jsp'" style='font-family: "Book Antiqua", "Times New Roman", Serif'/>
  104.    
  105.  
  106. </div>
  107.      </c:forEach>
  108.           </body>
  109. </html>
  

Donc, comme tu peux le voir, sur ma JSP, j'appelle l'information v, grace à la balise <c:out value="${v}"></c:out>... elle me retourne les listes Projets complètes... Cela donne un résultat qui ressemble à ca :

 

Projet [numero=7, intitule=ok, statut=C, domaine=DIVERS, datecreation=2013-02-22, datebutoire=2015-01-01, description=Une Description] (C'est donc ce qui s'affiche dans mon tableau littéralement)

 

Par contre, j'aimerai n'afficher que l'information intitulé à cet endroit la par exemple

 

Mais quand je précise que l'information que je veux est v.intitulé (ce que je suppose qu'il faut faire) il me retourne une erreur....

 

J'en conclut que ce "Projet [numero=7, i/.../on]" est compté comme une chaine de caractères à part entiere.. N'est ce pas ?

 

Mais comment est ce que je peux récupérer seulement l'information qui m'intéresse ? ='(

 

Je commence à me taper la tete sur le clavier... à chaque fois que j'arrive à surpasser une erreur, j'en ai une autre derriere !

 

Dans tous les cas, merci pour ton précédent message, j'ai sauvé les valeurs dans des variables associées et grâce à ca je peux voir qu'il y à bel et bien quelque chose derriere ! =)

  

à bientôt ! Merci encore pour ta patience exemplaire


Message édité par James Pinkerton le 22-02-2013 à 15:47:35
n°2177169
willy le k​id
Posté le 22-02-2013 à 22:35:46  profilanswer
 

tu cherches le resultat.projet.intitule et tu mets projet sous la var "v"
donc je suppose
<c:out value="${v.intitule}"></c:out>
 
ou alors fouilles dans les tutoriaux JSTL
http://www.developpez.net/forums/d [...] c-foreach/

n°2177331
James Pink​erton
Jeune padawan...
Posté le 25-02-2013 à 10:06:40  profilanswer
 

EDIT :  
 
Oulah, autant pour moi, ca marche nickel !  
 
Pour je ne sais quelle raison, ma classe était en private... Ca ne risquait pas de fonctionner !
 
 
Dans tous les cas, avec le <c:out value="${v.intitule}"></c:out>, ca marche super !  
 
 
 
Merci beaucoup Willy =D
 
 
Je met ce post en résolu ! (Il en aura fallu du temps x) )


Message édité par James Pinkerton le 25-02-2013 à 10:51:57

---------------
Votre vie est régie par ce que les gens attendent de vous

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  Afficher des données sur ma page d'accueil JSP

 

Sujets relatifs
Aide: Mise en Page "header" et redimensionnementflux de données en JAVA
Afficher ligne de la valeur recherchéACCESS - Afficher coordonnées d'un point dans graphique
Script PHP qui génère une page html grâce a un formulaireComment créer une page web qui affiche tout les images d'un fichier ?
Frontpage: protéger l'accès à une page par un mot de passecomment afficher le contenu d'un dossier en vba
Récupérer des données mysql et les insérer dans un menu déroulantJava, aide pour trouver fonction dans page HTML (WebBrowser inside)
Plus de sujets relatifs à : Afficher des données sur ma page d'accueil JSP


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR