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

Struts 1 Java Discussion :

Passer des identifiants BDD dans une Url et Affichage dynamique


Sujet :

Struts 1 Java

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 54
    Points : 34
    Points
    34
    Par défaut Passer des identifiants BDD dans une Url et Affichage dynamique
    Re bonjour à tous,

    Pour ceux qui ne le savent pas encore je cherche à créer des pages dynamiques avec réécriture d'url.

    Pour l'instant, j'ai créer une jsp qui affiche le contenu d'une table "départements" qui affiche une liste des départements de France.

    Maintenant la partie plus corsée arrive :

    Je voudrais que chaque ligne de cette liste fasse un lien vers une jsp qui affichera une liste de villes dont le code postal débute par le numéro du département.

    Concrètement :
    Dans ma jsp département, en cliquant sur le département île de France, dont l'identifiant est 75 (la liste des département à 2 colonnes : le num du département et son nom), je souhaiterai atterrir sur une jsp qui affiche la liste des villes dont le code postal commence par 75.


    Pour l'instant j'ai créé un fichier VilleBean, VilleDAO, VilleMapDAO et Ville SQL.

    J'ai plus de mal avec mon action et ma jsp.

    Comment faire pour passer dans un lien un identifiant de bdd ?

    Ci dessous ce que contient ma jsp qui affiche les départements ( en rouge les liens qui n'existe pas encore, c'est juste pour vous montrer le type de lien souhaités) :
    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
    <table>
    
    <%int cpt=0; %>
    <logic:iterate id="deptmp" name="departementList">
    
    <tr>
    //Ceci est la colonne de la liste affichant les numéros des département
    <td><html:link href="http://www.monsite/departements/villes?id="id_departement">"> <bean:write name="deptmp" property="id_departement" /></html:link></td>
    
    //Ceci est la colonne de la liste affichant les noms des département
    <td><html:link href="http://www.monsite/departements/villes?id="id_departement"><bean:write name="deptmp" property="nom_departement" /></html:link></td>
    
    </tr>
    <%cpt ++; %>
    </logic:iterate>
    
    
    </table>
    Le but étant que si je clique sur le département 01, la jsp d'affichage (content.ville qui n'existe pas encore) fasse appel à une requête sql de type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Select * from MATABLE where code_postal Like '01%'
    et affiche le résultat de cette requête dans une liste

    Est ce que je dois créer un fichier de type VilleForm, sachant que ce qui m'intéresse c'est juste un affichage de liste.

    Désolé si c'est pas toujours clair mais Java a tendance à me ronger le cerveau ^^

  2. #2
    Membre confirmé
    Avatar de link256
    Profil pro
    Développeur Java
    Inscrit en
    Février 2003
    Messages
    596
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2003
    Messages : 596
    Points : 642
    Points
    642
    Par défaut
    Tu veux faire passer dans l'url qui accède à ton action ville le login et mdp de ta BDD ?

    Niveau sécurité c'est assez bof.

    qu'elle est le lien entre un compte utilisateur BDD et les départements ?
    Est-ce une application avec plusieurs utilisateur nécessitant login/mdp ?

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 54
    Points : 34
    Points
    34
    Par défaut
    non tu as raison pour l'url,j'utiliserai une régle de réécriture pour ça.
    Je voulais pas faire passer le login et le mot de passe de la bdd mais l'identifiant des département contenus dans la table départements

    exemple : si on clique sur le département 75 :

    http://monsite.fr/departements/villes-du-75.html

    Et la page affichée serait une liste des villes dont le code postal commence par 75 .

    Concernant l'application, c'est une application front office, sans login ni mot de passe.

    La but est juste d'afficher des villes en fonction du département choisi par l'utilisateur au préalable.

  4. #4
    Membre confirmé
    Avatar de link256
    Profil pro
    Développeur Java
    Inscrit en
    Février 2003
    Messages
    596
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2003
    Messages : 596
    Points : 642
    Points
    642
    Par défaut
    Donc sans ce cas là

    tu as ton lien http://www.monsite/departements/villes?id="id_departement

    Ville correspond à une action définie dans ton struts config.xml

    Tu as donc une class Ville qui implémente Action

    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
     
    public class ActionVille implement Action
    {
    public ActionForward execute(ActionMapping mapping, ActionForm form,
    			HttpServletRequest request, HttpServletResponse response) throws Exception
    {
    String cp = request.getParameter("villes");
     
    if(null!cp)
    {
      excution de la requetes pour recuperer les villes et tu en genere une liste de villes
     
    }
     
    request.setParameter("listeVille",listeVille);
    return mapping.findForward("succes");
     
    }
    }
    ou succes est mapper a ville.jsp toujours trus-config.xml au nuveau de l'action

    Ta ville.jsp n'a plus qu'a lire les donnes de ta request et les afficher

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 54
    Points : 34
    Points
    34
    Par défaut
    Merci pour ta réponse .


    Je voudrais savoir comment ferais tu les requêtes qui devront afficher les villes :

    Est ce que la requête ci dessous fonctionnerai ? :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT *
    FROM Ma_table
    WHERE code_postal
    LIKE '#value#%'
    Value prenant la valeur de "id_departement"

    Donc de quelle manière communique t'on d'une jsp vers la bdd pour que le système exécute la requête et modifie #value# par la valeur de l'id_departement sélectionné dans la jsp ?(d'habitude on fait l'inverse)

    Je sais pas si j'ai été clair...

    En tout cas merci encore de ta réponse je vais explorer dans ce sens.

  6. #6
    Membre confirmé
    Avatar de link256
    Profil pro
    Développeur Java
    Inscrit en
    Février 2003
    Messages
    596
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2003
    Messages : 596
    Points : 642
    Points
    642
    Par défaut
    Je pense qu'il te manque quelques bases et notion sur les principes de Struts ainsi que sur l'exécution de requêtes.

    tu utilises bien le Framework Strust ? (je te demande ca car tu as posté dans cette section)
    Struts suis le principe MVC modèle vue contrôleur

    la vue correspond à tes JSP qui ne font qu'afficher les données.
    Action servlet sert de contrôleur et c'est elle qui rédige vers la bonne action ou bonne JSP.
    Les actions on accès au données qui représente le modèle.

    note :espère ne pas avoir dit trop de bêtise

    Donc Quand tu cliques sur le lien de ta première JSP le mécanisme doit être le suivant.

    JSP liste département -> ActionVilles(c'est à ce niveau là que tu consultes la base de données et exécutes la requêtes et tu places le résultat dans la request comme expliqué plus haut) -> JSP liste Ville (elle lis la liste de ville à partir de la request et les affiche)

    Pour ce qui est de ta request je pense que tu connais la valeur exacte du département, tu n'est donc pas obligé à utiliser un like un égale doit suffire.

    De plus pour une optimisation des requêtes il faut passé par des preparatedStatement.
    SELECT * FROM Ma_table WHERE code_postal = ?

    regarde la section dédié de cette FAQ http://java.developpez.com/faq/jdbc/...paredstatement

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 54
    Points : 34
    Points
    34
    Par défaut
    Donc oui j'utilise bien struts, et je suis bien d'accord avec le modèle que tu as donné.

    Concernant la requête, le LIKE est indispensable vu que la liste affichée sera une liste de Villes dont le code postal commence par le même identifiant que le département.

    Avec un égal ça ne marcherait pas.

    En tout cas merci de tes lumières, j'ai pas eu le temps de trop cogiter là dessus.
    Maintenant il me manque plus qu'aller au charbon !

    Peace

  8. #8
    Membre confirmé
    Avatar de link256
    Profil pro
    Développeur Java
    Inscrit en
    Février 2003
    Messages
    596
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2003
    Messages : 596
    Points : 642
    Points
    642
    Par défaut
    OKi je comprend mieux pour l'utilisation du like mais n'oublie pas d'utiliser le preparated statement ^^

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 54
    Points : 34
    Points
    34
    Par défaut
    Là où je coince c'est sur ma jsp qui affiche la liste des départements :

    A ce jour elle ressemble à ça :

    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
     
    Ci dessous les départements de France : 
     
    <table>
     
    <%int cpt=0; %>
    <logic:iterate id="deptmp" name="departementList">
     
    <tr>
     
    <td> <bean:write name="deptmp" property="code" /></td>
     
    <td><bean:write name="deptmp" property="nom_departement" /></td>
     
    </tr>
    <%cpt ++; %>
    </logic:iterate>
     
     
    </table>
    Pour l'instant j'ai un simple affichage, sans liens.

    Ce que je voudrais c'est créer des liens sur chaque ligne et récupérer la propriété "code", qui sera envoyée à mon action VilleAction, qui exécutera une requête SQL en fonction du paramètre code et enfin affichera une jsp qui contiendra les valeurs retournées par la requête SQL (je sais pas si c'est clair...)

    Donc naivement je pense à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <table>
     
    <%int cpt=0; %>
    <logic:iterate id="deptmp" name="departementList">
     
    <tr>
     
    <td><html:link href="http://www.monsite.com/departements/villes?id=code"> <bean:write name="deptmp" property="code" /></html:link></td>
     
    <td><html:link href="http://www.monsite.com/departements/villes?id=code"> <bean:write name="deptmp" property="nom_departement" /></html:link></td>
     
    </tr>
    <%cpt ++; %>
    </logic:iterate>
    Le paramètre 'code' correspond au code du département(75 pour île de France) et permet par la suite de récupérer les villes dont le code postal commence par le paramètre 'code'.

    Vu qu'il ne s'agit pas d'un formulaire, je ne peut pas faire du style "choisissez votre département puis validez" et récupérer les données envoyées par le submit.

    Il faut que j'identifie sur ma JSP des départements le 'code' correspondant à la ligne cliquée (soit on clique sur le 'code du département' ou sur son nom) et envoyé ce paramètre dans mon action pour éxécuter une requête de type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    "SELECT * From matableVille
    WHERE code_postal LIKE 'code' "
    Après sa sera un travail de réécriture pour que l'url affichée soit en correspondance avec le département et le code département cliqué par l'internaute.
    (Vous êtes toujours là ??^^)

    donc dans une simple jsp, je voudrais savoir sur quelle ligne de ma liste l'internaute a cliqué et récupérer les paramètres correspondants pour les transmettre à la jsp qui devra affiché le résultat en fonction de la ligne cliquée sur la jsp précédente (oui moi aussi parfois je m'embrouille ^^)

    Si vous avez encore des tuyaux je suis preneur.

    Peace

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 54
    Points : 34
    Points
    34
    Par défaut
    Bon j'ai avancé un peu sur ma jsp, j'ai trouvé comment passer en paramètre les id de ma jsp et les récupérer dans mon action.

    Quand j'aurais réussi je mettrai le sujet en "résolu" merci encore pour ton aide

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 54
    Points : 34
    Points
    34
    Par défaut
    EUREKA

    et bien merci beaucoup, maintenant ça marche !

    Cependant (oui il y a toujours un cependant)

    J'ai un souci pour tous les codes qui sont en dessous de 10.
    En effet dans ma base les codes sont des int et donc le 1er de la liste à un code de 1 et je voudrais qu'il ai un code de 01.

    Est ce que je dois changer dans ma BDD le type de donnée de code par un string ?

    Et enfin je voudrais peaufiner le truc.

    A ce jour mes url sont de ce type :

    www.monsite/departements/villes.html?code=75

    Est ce qu'avec une régle de réécriture d'url on peut modifier cette url en :

    www./monsite/departements/villes-75-ile-de-france.html.

    (le 75 correspondrait au paramètre code_departement présent sous ce nom dans la table departement dans la colonne de même nom et ile-de-france correspondrait au paramètre nom_departement présent dans la table département dans la colonne de même nom)

    Merci encore !

  12. #12
    Membre confirmé
    Avatar de link256
    Profil pro
    Développeur Java
    Inscrit en
    Février 2003
    Messages
    596
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2003
    Messages : 596
    Points : 642
    Points
    642
    Par défaut
    Pour ton problème de 01 à la palce de 1 je n'ai pas tout comrpis


    En ce qui concerne l'url pour accéder à la liste des villes tu voudrais faire apparaître 75-ile-de-france à la palce de 75 pour que ec soit plus parlant pour l'utilisateur ?
    Si oui

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <td>
    	<html:link href="http://www.monsite.com/departements/villes?id="<bean:write name="deptmp" property="code"/>" />
    		<bean:write name="deptmp" property="nom_departement" />
    	</html:link>
    </td>
    Tu peux tout aussi bien cache l'url en passant par une fonction javascript en lieu et place du href

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    href="#" onclick="pageVille("<bean:write name="deptmp" property="code"/>","("<bean:write name="deptmp" property="nom_departement"/>");
    et la fonction javascript
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
       function pageVille(idCP,nomFenetre)
       {
            var url = "http://www.monsite.com/departements/villes?"+idCP;
            window.open(url,nomFenetre,allParamsForOpening);
     
       }
    ici la allParamsForOpening correspond a tous les paramètre possible que tu peux passer au window.open taille de la fenetre emplacement, cache la barre d'adresse,les bouton de navigation du navigateur ect ....

  13. #13
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 54
    Points : 34
    Points
    34
    Par défaut
    Concernant le souci du 1 et du 01 c'était juste que dnas ma BDD j'ai créer la colonne code de type int, et du coup il convertit le 01 en 1.

    Ce qui fait que lorsqu'on choisi le département 1, le code renvoyé est le 1 du coup ma requête récupère les villes dont le code postal commence par un 1 au lieu de 01.
    En le changeant en string ça devrait changer je suppose. Faudra que je fasse les modifs sur mes dao et mon fichier sql.

    Pour la redirection d'url voici comment ils sont gérés dans ma jsp département :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <html:link href="www.monsite.com/departements/villes.dhtml"  paramId="code" paramName="code">
    Ce qui donne www.monsite/departements/villes.html?code=10


    et si dessous ma règle de redirection

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     <rule>
            <note>Liste Villes</note>
            <from>/departements/villes\.html</from>
            <to>/ville.do</to>
        </rule>
    Je pense que c'est sur cette régle qu'il faudra jouer.



    Je voudrais savoir comment à partir du code transmis (ici 10), on peut récupérer dans la bdd le nom du département correspondant dont le code est 10 et l'écrire dans l'url....

    C'est peut être un peu compliqué mais ça serait l'idéal pour l'affichage de l'utilisateur...



    Utiliser du javascript ne me tente pas sur ce coup

  14. #14
    Membre confirmé
    Avatar de link256
    Profil pro
    Développeur Java
    Inscrit en
    Février 2003
    Messages
    596
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2003
    Messages : 596
    Points : 642
    Points
    642
    Par défaut
    Pour le 01 et et le 1 j'avoue que j'ai pas trop d'idée a aprt modifer comme tu l'as dit.

    Si tu veux évité d'appliquer une régle de gestion d'url
    pour le lien au lieu d'utiliser le href passe par la balise forward

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <html:link forward="ville"  paramId="code" paramName="code">
    	<bean:write name="deptmp" property="nom_departement"/>
    </html:link>
    ce qui donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <a href="/contexApplicatif/Ville.do?code=75">Ile de de france</a>
    Pour ce qui ets du dernier point je comprend pas ou est la difficulté.
    Tu arrives a récupérer la valeur 10 rien ne t'empeches de refaire une requête pour obtenir à nouveau le nom du département.
    Ou tu n'as pas de table département dans ta base avec la colonne n° departement et une seconde colonne 'nom département' ?

    Ou autre solution au niveau du html:link lorsque du as plusieurs paramètre tu peux utilisé l'attribut name correspondant à un hashMap déclare qui contient l'enssemble des paramètres de l'url.
    Dans ce cas la tu passeras le nom du département ainsi que sa valeur.

  15. #15
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 54
    Points : 34
    Points
    34
    Par défaut
    Ok,

    en tout cas merci pour tout tes conseils et le temps que tu as passé à me répondre.

    Merci encore

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

Discussions similaires

  1. Passer des paramètres cachés dans une URL?
    Par PeteZah dans le forum C#
    Réponses: 2
    Dernier message: 09/09/2008, 14h41
  2. Passer un caractére spécial dans une url
    Par hedgehog dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 20/06/2008, 12h23
  3. Passer des paramètres à SugarCRM dans l'url
    Par adilooo dans le forum SugarCRM
    Réponses: 0
    Dernier message: 28/04/2008, 17h48
  4. Réponses: 1
    Dernier message: 15/04/2008, 18h36
  5. Executer des script perl dans une url
    Par Spy*** dans le forum Langage
    Réponses: 0
    Dernier message: 17/03/2008, 12h52

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