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 :

invoquer une servlet d'une JSP au demarrage d'une application


Sujet :

Servlets/JSP Java

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 15
    Points : 10
    Points
    10
    Par défaut invoquer une servlet d'une JSP au demarrage d'une application
    Bonjour,

    Je suis débutant en JSP donc merci d'éclairer ma lanterne pour ce problème :

    L'objectif : afficher une page d'accueil en JSP qui liste la liste de tous les clients

    Je souhaite procéder ainsi : (est ce la bonne solution) ????

    Je souhaite que la page d'accueil(JSP) appelle une Servet , cette dernière appelé des programmes cobol , stocke le résultat dans le bean

    La page d'accueil JSP instancie le Bean et affiche la liste des clients.

    Je bloque sur ce point :

    comment je peux invoquer une Servet d'une JSP sans formulaire ni d'action de type bouton ou de lien

  2. #2
    Nouveau membre du Club
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2009
    Messages
    22
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2009
    Messages : 22
    Points : 31
    Points
    31
    Par défaut
    Salut,

    la méthode doGet() de ta servlet est invoquée à chaque fois que l'url envoyé possède le nom de mapping...
    exemple dans ton web.xml:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <servlet-mapping>
        <servlet-name>MaServlet</servlet-name>
        <url-pattern>/do/*</url-pattern>
    </servlet-mapping>
    si tu passe l'url http://monserveur/do/qqch
    tu passera par la méthode doGet() de ta servlet.
    Y a plus qu'à!!

  3. #3
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 15
    Points : 10
    Points
    10
    Par défaut
    Citation Envoyé par Pika12 Voir le message
    Salut,

    la méthode doGet() de ta servlet est invoquée à chaque fois que l'url envoyé possède le nom de mapping...
    exemple dans ton web.xml:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <servlet-mapping>
        <servlet-name>MaServlet</servlet-name>
        <url-pattern>/do/*</url-pattern>
    </servlet-mapping>
    si tu passe l'url http://monserveur/do/qqch
    tu passera par la méthode doGet() de ta servlet.
    Y a plus qu'à!!

    Pour invoquer une servlet il faut que l'utilisateur clique sur une url ou un bouton or dans ma page d'acceuil ,il n'yaura ni bouton ni lien :la servlet doit se declencher d'elle meme ou lors de l' appel de la page d'acceuil sans clique sur un lien puis elle doit faire le traitement suivant :ouvrir des connexions sur le mainframe , me ramener la liste des clients , initialiser le beans et ce tableau de beans sera afficher dans ma page d'acceuil .

    Donc comment faire appel a une servlet sans faire de lien ?


    Si vous avez d'autres idées , je reste à votre écoute Merci bien....

  4. #4
    Nouveau membre du Club
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2009
    Messages
    22
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2009
    Messages : 22
    Points : 31
    Points
    31
    Par défaut
    je n'ai pas parlé de bouton ou de lien... J'ai pas du être clair.
    Il suffit de mettre cette url dans ton navigateur et ça fonctionne. Tout ton traitement aura lieu avant que l'utilisateur ne voit apparaitre ta page d'accueil.

  5. #5
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    Tu veux que l'appel se fasse à intervalle régulier ?
    Ce serait du style :
    Page -> servlet -> Page
    :........n(fois).........:
    Pour ça, tu pourrais utiliser une directive <meta>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <META http-equiv="Refresh" content="10; URL=http://leSite/leServeur/laServlet">

  6. #6
    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
    Tu peux créer une page index.jsp dans laquelle tu codes juste un forward vers cette servlet, via un jsp:forward par exemple.

    Autre solution : si la liste de clients est commune à tous les utilisateurs de l'application, tu peux créer une servlet qui sera exécutée au lancement de l'application, en ajoutant le paramètre load-on-startup dans le web.xml. Dans la méthode init() de cette servlet, tu peux mettre la liste dans le scope application et ensuite y accèder de n'importe quel jsp.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    376
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 376
    Points : 431
    Points
    431
    Par défaut
    Si c'est ça le problème mieux vaut utiliser les welcome-file du web.xml :

    http://www-igm.univ-mlv.fr/~dr/XPOSE...cat.php?rub=16

  8. #8
    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
    Citation Envoyé par mixouille Voir le message
    Si c'est ça le problème mieux vaut utiliser les welcome-file du web.xml
    Dans le welcome-file du web.xml, pour la majorité des serveurs d'application, tu ne peux pas mettre le path d'une servlet mais seulement une page jsp ou une page html.
    ça ne répond donc pas au besoin de Manuchao14 qui souhaite exécuter une servlet au démarrage de l'application.
    C'est pour ça que j'ai proposé le jsp:forward dans la page index.jsp.

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    376
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 376
    Points : 431
    Points
    431
    Par défaut
    Au temps pour moi, tu as raison j'avais oublié, et d'ailleurs c'est bien dommage.

    Donc je plussoie la solution de c_nvy.

  10. #10
    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
    En fait, il existe une astuce pour permettre l'exécution d'une servlet via le welcome-file.

    Ce qui se passe, c'est que pour la plupart des serveurs d'application, quand on code le welcome-file comme ceci :
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <welcome-file-list>
    	<welcome-file>MaServlet</welcome-file>
    </welcome-file-list>
    cela génére un message d'erreur au lancement de l'application parce que le serveur cherche un fichier qui s'appelle MaServlet à la racine de l'application.
    Donc, pour éviter d'avoir le message d'erreur, il faut créer un fichier vide du nom de MaServlet à la racine de l'application.
    Et s'il y a bien une servlet d'url-pattern MaServlet définie dans le web.xml, celle-ci sera exécutée au lancement de l'application.
    Je n'ai pas eu l'occasion de tester ça sur tous les serveurs d'application mais je confirme que ça fonctionne très bien sous Tomcat 5.

    L'autre solution si on veut éviter de faire cela, c'est l'utilisation du jsp:forward dans la page index.jsp comme je l'ai proposé précédemment.

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    376
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 376
    Points : 431
    Points
    431
    Par défaut
    Hey, pas bête du tout ça ! Je crois que je préfère un peu cette solution, un peu plus facile pour la maintenance, bien que la différence soit minime. Ça évite notamment un forward, très légèrement coûteux niveau perfs.

    EDIT : confirmation de ce que tu écris : http://www.orionsupport.com/71.html

  12. #12
    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 trouve simplement que le fait de devoir créer un fichier vide à la racine, ça fait un peu bidouille.
    Celui qui choisit cette solution a tout intérêt à mettre un commentaire dans ce fichier pour expliquer à quoi il sert et préciser qu'il ne faut surtout pas le supprimer pour assurer le bon fonctionnement de l'application.

  13. #13
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    376
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 376
    Points : 431
    Points
    431
    Par défaut
    Ben, les deux sont de la bidouille, honnêtement, simplement j'apprécie le fait que celle-ci évite un forward. Mais oui, un bon gros commentaire s'impose, évidemment.

  14. #14
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 15
    Points : 10
    Points
    10
    Par défaut
    J'ai résolu le problème en faisant ainsi :

    1) Une page index.jsp qui fais la redirection vers la servlet.
    2) La servlet qui charge la liste des client et les met dans un bean , ce bean est mis en session et on effectue une redirection vers ma page d’acceuil.jsp

    3) La page d’accueil récupère la liste des clients a partir du beans qui était mis en session.


    Et le tour est joué ,…Merci pour vous tous






    Citation Envoyé par Manuchao14 Voir le message
    Bonjour,

    Je suis débutant en JSP donc merci d'éclairer ma lanterne pour ce problème :

    L'objectif : afficher une page d'accueil en JSP qui liste la liste de tous les clients

    Je souhaite procéder ainsi : (est ce la bonne solution) ????

    Je souhaite que la page d'accueil(JSP) appelle une Servet , cette dernière appelé des programmes cobol , stocke le résultat dans le bean

    La page d'accueil JSP instancie le Bean et affiche la liste des clients.

    Je bloque sur ce point :

    comment je peux invoquer une Servet d'une JSP sans formulaire ni d'action de type bouton ou de lien

  15. #15
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 15
    Points : 10
    Points
    10
    Par défaut Solution invoquer une servlet d'une page au demarrage d'une application
    Pour utiliser une servlet au demarrage d'une application ,il faut que notre page d'accueil fasse une redirection vers la servlet


    Il faut redéfinir la fonction init() de la servlet et mettre tout le code qui nous permet de se connecter sur le mainframe dans le init de la servlet .Une fois la servlet chargé elle execute les programmes sur le mainframe et charge les données qu'on souhaite dans des beans qui seront stocké par la suite dans un session et on recupere les sessions sur toutes les pages...

    Voila ...Merci






    Citation Envoyé par Manuchao14 Voir le message
    J'ai résolu le problème en faisant ainsi :

    1) Une page index.jsp qui fais la redirection vers la servlet.
    2) La servlet qui charge la liste des client et les met dans un bean , ce bean est mis en session et on effectue une redirection vers ma page d’acceuil.jsp

    3) La page d’accueil récupère la liste des clients a partir du beans qui était mis en session.


    Et le tour est joué ,…Merci pour vous tous

  16. #16
    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
    Citation Envoyé par Manuchao14 Voir le message
    Pour utiliser une servlet au demarrage d'une application ,il faut que notre page d'accueil fasse une redirection vers la servlet
    Pas nécessairement.

    Je t'avais d'ailleurs donné la solution ici.
    Pour lancer une servlet au démarrage d'une application, il suffit d'ajouter le paramètre load-on-startup dans la définition de cette servlet dans le web.xml et d'implémenter la méthode init().

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

Discussions similaires

  1. Réponses: 10
    Dernier message: 11/01/2011, 16h43
  2. Réponses: 13
    Dernier message: 27/11/2007, 11h06
  3. [JSP][Tomcat][Débutant] Utiliser une classe dans du JSP
    Par mavina dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 09/05/2007, 11h50
  4. Réponses: 2
    Dernier message: 15/02/2006, 17h35
  5. [SERVLET]Appel d'un fichier à partir d'une servlet
    Par fchafia dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 17/03/2005, 12h21

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