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 :

[jsp] Bonne conception pour une pagination ?


Sujet :

Servlets/JSP Java

  1. #1
    Candidat au Club
    Inscrit en
    Décembre 2005
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 4
    Points : 2
    Points
    2
    Par défaut [RESOLU] [jsp] Bonne conception pour une pagination ?
    Bonjour à tous,

    Je debute en Java et suis chargé de développer une appli de gestion. Jusqu'ici j'utilise des servlets qui interroge la base, constitue des collections d' objets (personnes, salaires...) et les redirige pour affichage sur des jsp. (pas de soucis car pas de listes à afficher)

    Le pb vient du fait que je souhaite maintenant paginer un affichage (boucle sur un Vector pour afficher plusieurs lignes), alors que ma jsp ne se connecte pas directement à la base et qu'elle récupère des objets et non un resulset.

    Comment s'y prendre ?
    - Pagination pointant vers un servlet et faire remonter des vector avec un nombre limité de réponses et réinterroger la base en repassant par la servlet à chaque demande de page
    - Pagination pointant vers la meme Jsp en lui passant l'objet en paramètre (comment passer un objet en paramètre ?)
    - placer le vector dans la session
    - attaquer la base sans passer par une servlet en utilisant des taglibs ?


    Dans l'attente de vos conseils...

  2. #2
    Membre expérimenté
    Avatar de fabszn
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2002
    Messages
    974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mars 2002
    Messages : 974
    Points : 1 638
    Points
    1 638
    Par défaut
    Hello,

    La premiere chose je te conseille de passer par des ArrayLists et non des vectors.. les ArrayList sont plus performante.

    Concernant la pagination...c'est toujours le grand probleme..

    Il doit exister des apis de tag lib permettant de faire cela (bon je n'en connais pas, mais ca doit se trouver)


    Maintenant par rapport aux propositions que tu as fait : je pense que la meilleur solution est la premiere: de reinterroger la base à chaque fois... de cette maniere tu n'as que les indexes à gerer et à maintenir en memoire. Et sur ce modele là tu peux envisager de developper ton propore TagLib permettant de paginer n'importe quelle collection de données.

    Mettre une collection en session : c'est hors de question!!!!!!!!!! L'objet session est reservé à un minimun d'information. Je te rappelle que l'objet session vit durant tout le temps de connexion de l'utilisateur et est residant en memoire donc si tu commences à trop le charger tu vas vite saturer la memoire de ton serveur (lors de monté en charge). Pour faire transiter ce genre d'info il faut utiliser l'objet request qui est limité par son temps de vie!

    J'espere que cela t'aidera, si tu as des questions n'hesite pas!

  3. #3
    Candidat au Club
    Inscrit en
    Décembre 2005
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Merci fabszn de t'etre penché sur mon pb.

    Pour la session, je me doutais que c'etait une technique de cochon à ne pas utiliser.
    Interroger la base grace à un servlet à chaque fois que l'on veut la page suivante me paraissait lourd à gérer et peu performant mais je ne ne vois pas comment faire autrement vu que je ne souhaite pas attaquer la base depuis la jsp.
    je vais donc essayer de bidouiller dans ce sens.
    Si qqun veut ajouter son grain de sel, suis preneur...

  4. #4
    Membre expérimenté
    Avatar de fabszn
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2002
    Messages
    974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mars 2002
    Messages : 974
    Points : 1 638
    Points
    1 638
    Par défaut
    Hello,

    Sinon, j'avais vu sur un projet la possibilité de s"appuyer sur les EJBs de type session...Mais si tu debutes en Java cela risque de compliquer un peut les choses
    En fait, ce tag lib avait ete developpé en interne, il avait comme parametre la reference JNDI de l'ejb concerné.
    L'ejb en question etait generique. C'est a dire que dans sa declaration au niveau des fichiers de config, on indiquait la requete que l'on souhaitait executé avec les differents param de la requete.

    Vraiment tres pratique et transparent pour le developpeur.

    Sinon je viens de penser à un truc, si tes listes ne bouge pas trop et que tu n'en as pas une quantité astronomique, tu pourrais envisager des les charger au niveau du context de l'application au demarrage de ton serveur(ou lors du premier acces...avec un raffraichissement tous les X temps si jamais elles sont suceptibles d'etre modifiées...Un acces en memoire est tjrs moins couteux qu'un acces à la base...

    Bon courage, si tu as des questions n'hesite (trs ) pas

  5. #5
    Candidat au Club
    Inscrit en
    Décembre 2005
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    OKi !
    La première solution fonctionne.

    Merci pour tes conseils.
    Pour les taglibs perso et les ejb, je verrais un peu plus tard ...


  6. #6
    Membre expérimenté
    Avatar de fabszn
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2002
    Messages
    974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mars 2002
    Messages : 974
    Points : 1 638
    Points
    1 638
    Par défaut
    Hello,

    Cool,
    n'oublie pas le tag résolu!

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 106
    Points : 130
    Points
    130
    Par défaut
    les ejb session sont stockées en memoire donc c pareil. Tu peux stocker la collection dans la session a condition de la libérer quand tu en as plus besoin.

    Si tu fais le calcul de ce que coute en mémoire une collection de string, il en faut vraiment beacoup pour faire peter le serveur.

    Quant a faire la requete à chaque fois, certes tu limites la quantité de mémoire utilisée, en revanche tu empietes sur le nombre de connections au serveur BDD et donc sur la bande passante.

    Les deux solutions se valent donc. Ceci dit, en comparant les prix de la memoire et de la bande passante, mieux vaut faire augmenter la memoire des serveurs qu'autre chose

    tchou

  8. #8
    Candidat au Club
    Inscrit en
    Décembre 2005
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 4
    Points : 2
    Points
    2
    Par défaut [RESOLU] [jsp] Bonne conception pour une pagination ?
    Ben en fait dans mon cas la bande passante m'importe peu puisqu'il s'agit d'une appli interne. Donc pas de surcharge de ce type en prévision car ce sera au max qqs dizaines d'utilisateurs en même temps. De plus j'ai installé un pool de connexions censé les gérer .

    Merci pour vos remarques.

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 106
    Points : 130
    Points
    130
    Par défaut
    et bien dans ce cas ne stocke rien dans la session et fait plusieurs requetes serveurs.

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

Discussions similaires

  1. Conception pour une entreprise - Propriétaire de l'oeuvre
    Par T@kniX dans le forum Droit du travail
    Réponses: 5
    Dernier message: 06/09/2008, 09h07
  2. Réponses: 2
    Dernier message: 18/07/2008, 21h34
  3. garder les valeurs d'un array pour une pagination
    Par berti dans le forum Langage
    Réponses: 4
    Dernier message: 08/07/2008, 19h04
  4. [MySQL] Utilisation LIMIT pour une pagination
    Par tilou dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 16/05/2006, 08h29
  5. Réponses: 1
    Dernier message: 14/05/2006, 20h02

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