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 :

Différenciation Formulaire dans servlet pour pattern MVC


Sujet :

Servlets/JSP Java

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 25
    Points : 9
    Points
    9
    Par défaut Différenciation Formulaire dans servlet pour pattern MVC
    Bonjour,

    Pour mon travail je suis en train d'implémenter le pattern MVC, ce qui est assez long mais pas si compliqué que ça au final...
    Bref

    Pour le moment j'ai plusieurs servlets qui s'occupent chacune de leur formulaire mais la théorie dit qu'il ne doit y avoir qu'un seul controleur qui redirige vers les pages JSP selon les requetes de l'utilisateur.

    Ma question est donc la suivante:
    Y'a-t-il une fonction qui me permette de récupérer le nom du formulaire qui fait appel à la servlet afin de pouvoir tout rassembler dans une seule servlet?

    je me contente aussi d'une fonction qui me permet de connaître l'ensemble des paramètre ou attributs qui sont contenu dans la variable request

    Merci d'avance pour votre aide

  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 : 44
    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 as le MVC et le MVC2 qu'utilise le framework Struts notamment ou il y a une seule et unique servlet qui sert de controleur et redirige l'ensemble des requêtes.

    tu as donc 2 solutions :

    Pour chacun de tes formulaires tu ajoutes un champ cache

    <form action="ServletControleur">
    < input name="formulaireName" type="hidden" value="formulaire1">
    </form>

    tu as une seule servlet pour l'ensemble de formulaire
    avec un switch par exemple qui traite la demande en fonction du paramètre
    formulaireName reçu mais tu te retrouve avec une grosse grosse servlet qui te sert de contrôleur te qui te fais aussi du traitement et qui continuera à grossir a chaque nouveau formulaire.



    Tu as plusieurs servlet c'est à dire que tu gardes toutes tes servlets déjà crée
    pour chacun de tes formulaires + une servlet de contôle qui pareil marcherais avec un Switch par exemple toujours en fonction du formulaireName mais qui redirigerait sur la servlet associée au formulaire (solution que je te conseille)

    Ce qui te fera bien respecté le modèle MVC 2.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 25
    Points : 9
    Points
    9
    Par défaut
    Je vais opter pour la deuxieme solution qui m'évitera de faire pas mal de modif'

    j'avais pas pensé au champs chaché dans le formulaire...

    Par contre, comment je fais pour rediriger vers les différentes servlet, parce qu'avec le requestDispactcher je sais pas si tu peux mettre autre chose une page jsp...???

    Mais je vais deja commencer à préparer mon nouveau controleur général!!!

    Allez MVC!!!

    PS: j'utilise pas struts mais spring, est ce que ca change quelque chose? a l 'intuition je dirais que non...

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Le modèle MVC dit plutôt qu'il y a 1 contrôleur pour 1 page... et encore...
    Le modèle MVC2 n'a qu'1 contrôleur qui redirige vers l'action voulue qui elle s'occupera de la réponse.

    Bref, si le but est d'avoir un contrôle centralisé pour certaines choses (utilisateur valide, format de la requête, etc...) tu pourrais également passer par un filtre... et ne rien (ou presque) toucher à l'application actuelle.

    Struts et Spring sont très différents, Struts est un framework MVC2, Spring est un conteneur léger (encore faudrait-il savoir quelle "module" de Spring tu utilises)

    Pour le requestDispatcher, rien ne t'empêche d'appeler une servlet (une JSP est également une servlet)

    A+
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 25
    Points : 9
    Points
    9
    Par défaut
    Struts et Spring sont très différents, Struts est un framework MVC2, Spring est un conteneur léger (encore faudrait-il savoir quelle "module" de Spring tu utilises)
    j'utilise tout ce qui est bean factory etc..

    Pour le requestDispatcher, rien ne t'empêche d'appeler une servlet (une JSP est également une servlet)
    pour rediriger vers la servlet je met requestdispatcher("ma_servlet.java")???
    si c'est ca alors:


    sinon :

    ^^

  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 : 44
    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
    requestdispatcher("ma_servlet.java")???
    Non ^^

    utilise le mapping associé à ta servlet défini dans le web.xml
    faut resonné en url pour la transmition de données et non en classe java

    car pour accéder à une servlet on est d'accord tu ne fais pas un

    http://localhost:/9080/MonAppi/maservlet.Java

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 25
    Points : 9
    Points
    9
    Par défaut
    non certes...
    lol

    cela dit mes servlet ne me servent qu'à gerer mes formulaire c'est leurs seule utilité mais d'un autre coté le point central de mon appli

    j'ai pas bien compris l'histoire du mapping,
    pour le moment il me servait seulement a declarer mes servlet

    mais je vois pas trop comment faier au "super" controleur de dispatcher vers tel ou tel servlet???

    je l'ai pas dit avant parce que j'y avais pas pensé, mais je ne pourrais pas mettre d'extrait de mon code, car je travaille dans la finance et le contenu de mon travail ne peut pas sortir de ma boite...

    Désolé d'avance mais je pense pas avoir autant de mal que ça, j'ai juste besoin de quelques mises aux points

  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 : 44
    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 dois avoir quelque chose de ce style là

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <servlet>
            <servlet-name>ConnectionServlet</servlet-name>
            <servlet-class>chemin.acces.ConnectionServlet</servlet-class>
        </servlet>
     
    <servlet-mapping>
        	<servlet-name>ConnectionServlet</servlet-name>
        	<url-pattern>/connexion</url-pattern>
    </servlet-mapping>

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 25
    Points : 9
    Points
    9
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <servlet>
            <servlet-name>ConnectionServlet</servlet-name>
            <servlet-class>chemin.acces.ConnectionServlet</servlet-class>
        </servlet>
     
    <servlet-mapping>
        	<servlet-name>ConnectionServlet</servlet-name>
        	<url-pattern>/connexion</url-pattern>
    </servlet-mapping>
    ouai j'ai bien ces declarations... mais je vois toujours ou tu veux en venir...

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    C'est pour illustrer l'appel d'une servlet via requestDispatcher, il suffit de mettre "/connexion" pour appeler la servlet
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  11. #11
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 25
    Points : 9
    Points
    9
    Par défaut
    j'ai une dernière question:
    si dans l'url pattern j ai mis les modele d extension genre *.add
    etc...

    si je veux les changer dans l'entete du formulaire je dois juste mettre le nom:
    i.e:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <form name="mon_form" action="ma_servlet" ou action="/ma_servlet">...
    en considérant le web.xml:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <servlet>
        <description></description>
        <display-name>ma servlet name</display-name>
        <servlet-name>ma_servlet</servlet-name>
        <servlet-class>moi.package.MaServlet</servlet-class>
      </servlet>
     
     <servlet-mapping>
        <servlet-name>Ma Serlet</servlet-name>
        <url-pattern>/ma_servlet</url-pattern>
      </servlet-mapping>
    ??

    ??

  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 : 44
    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
    Le comprend pas trop ton histoire de *.add ou plutot ce que tu veux en faire.

    toto.add, titi.add soient associés à ta servlet c'est bien cela ?

    à testé mais je pense que cela devrait marcher si tu tentes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <form name="mon_form"  ou action="/toto.add">

    Et si cela marche tu peux nous le confirmer ^^

  13. #13
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 25
    Points : 9
    Points
    9
    Par défaut
    alors pour recapituler:

    quand j'ai commencé à toucher aux servlet, j'ai suivi un tuto où pour mapper les servlet ils utilisaient
    *.add (enfin le add n a pas d importance ca pourrait etre *.toto, *.do *.pouet, etc...)

    le fait de mettre *.add par exemple permet de specifier que tous les formulaire se terminant par .add dans la balise action sont traité par la servlet mappé

    d'après ce que j'ai compris c'est juste une procédure de nommage.

    je reviens d'un pot donc je testerais demain...
    et je vous reviens sur le sujet pour le résultat des tests

  14. #14
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 25
    Points : 9
    Points
    9
    Par défaut
    juste un dernier truc poyur la journée auquel je viens de penser

    grace a un champs caché dans mon formulaire, je peux différencier la provenance des données dans mon controleur.
    en mettant dans action la meme servlet pour tous le monde

    maintenant mon probleme se résume à trouver comment rediriger, a partir du controleur, mes données vers les servlet correspondante... et plus à partir de la page.

    si j'ai bien réfléchis...
    requestDispatcher("/ma_serlvet").forward...
    ou
    requestDispatcher("ma_servlet.add").forward...
    selon la methode de mapping

    oui, non , peut etre, j'aurais pas du reflechir apres un pot..????

Discussions similaires

  1. Réponses: 1
    Dernier message: 27/10/2014, 16h32
  2. Router pour pattern MVC
    Par grunk dans le forum Contribuez / Téléchargez Sources et Outils
    Réponses: 3
    Dernier message: 06/02/2014, 08h54
  3. Réponses: 3
    Dernier message: 15/03/2007, 20h33
  4. Plusieurs formulaires dans une seule servlet
    Par bf83 dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 27/03/2006, 15h21
  5. [Struts] Element de formulaire dans une servlet
    Par Adrien09 dans le forum Struts 1
    Réponses: 4
    Dernier message: 17/03/2006, 15h14

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