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 :

Le transfert de la requête par 'ForwardAction' vers ma propre classe coince


Sujet :

Struts 1 Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    263
    Détails du profil
    Informations personnelles :
    Âge : 73
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 263
    Points : 121
    Points
    121
    Par défaut Le transfert de la requête par 'ForwardAction' vers ma propre classe coince
    Contexte (très résumé, mais encore compréhensible, j'espère) :
    Avant, j'employais donc JSP, JSTL, ... et une servlet pour chaque page envoyant une requête au serveur Tomcat. Par exemple, à la page d'autentification correspondait une servlet 'Authenticat_Contr' (httpServletRequest, ...Response, ...) (qui s'adressait vers une classe business 'Authenticat_Façade', 'Authenticat_DataAccess', JDBC, SQL, etc.).
    Avec Struts, c'est plutôt une servlet générique (classe ActionServlet du contrôleur) qui se charge de toutes les requêtes (URL#1 '*.do' propres à et envoyées par chaque page) et se base sur une table 'struts-config.xml' pour savoir
    1) quelle classe doit traiter la requête (p.ex. 'org.apache.struts.actions.ForwardAction') et
    2) vers quelle URL#2 doit être envoyée la requête (p.ex. une autre page '.JSP').

    J'ai donc voulu tester rien que ce petit mécanisme lorsque l'URL#2 ...
    A) est une autre page '.JSP'. Celle-ci est bien appelée. Youpie! Je n'ai pas encore appliqué d'action JSP ou JSTL pour tester la présence des paramètres de la requête émis par la page '.JSP' d'origine (log-in name, password, ...);
    B) est une de mes classes. Plus précisément la classe servlet 'Authenticat_Contr' (voir début). Surtout pour savoir si j'allais encore y recevoir les paramètres Request.
    Il faut savoir que a) le contexte : MC b) les packages : 'org' et 'control' c) ma classe : 'Authentic_Contr.java' .
    Je m'attendais donc à ce que 'ForwardAction' relaye la requête avec ses paramètres vers l'URL '/org/control/Authenticat_Contr.java'. Hélas, je reçois l'erreur "Etat HTTP 404 - /MC/org/control/Authenticat_Contr.java" ("La ressource demandée (/MC/org/control/Authenticat_Contr.java) n'est pas disponible.").
    Pourtant mon fichier struts-config.xml contient bien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <struts-config>
        <action-mappings>
            <action path="/Authenticat_url"
                    type="org.apache.struts.actions.ForwardAction"
                    parameter="/org/control/Authenticat_Contr.java"
            />
        </action-mappings>
    </struts-config>
    Une âme compatissante et éclairée a-t-elle une idée de la raison pour laquelle le conteneur de Tomcat ne trouve pas ma classe ?

    J'utilise l'IDE NetBeans 6.1, le conteneur Apache-Tomcat Server 5.5.27, JDK 1.6.0._07, Struts 1.2.9, Servlet 2.4, JavaBeans 1.01, JSTL 1.1 .

    Ou bien dois-je implémenter mon code dans une classe héritant de la classe ForwardAction (et httpServlet) ?

    Merci au cas où ...
    "Ah oui ! Juste encore cette toute dernière petite question ..." (Columbo - Peter Falk)

  2. #2
    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 n'utilise pas la ForwardAction et de plus, je n'ai jamais testé un forward vers une servlet mais je ne suis pas surprise que cela ne fonctionne pas tel quel.
    En effet, dans l'attribut parameter, il faudrait plutôt mettre l'url de la servlet, soit celle que tu as défini dans le web.xml.
    Modératrice Java - Struts, Servlets/JSP, ...

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    263
    Détails du profil
    Informations personnelles :
    Âge : 73
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 263
    Points : 121
    Points
    121
    Par défaut Confirmation
    Bonjour c_nvy,
    Oui, comme le montre l'extrait de mon fichier 'struts-config.xml'
    - parameter="/org/control/Authenticat_Contr.java" -
    le paramètre de mon action indique bien l'URL de ma servlet-cible.

    Par contre, je ne comprends pas que tu dises "soit celle que tu as défini dans le web.xml".
    Mon fichier 'web.xml' ne comporte qu'une servlet, la servlet générique 'org.apache.struts.action.ActionServlet' qui doit traiter toutes les URL's ('*.do') provenant de toutes les pages '.JSP'. Je pensais que cela constituait une première pierre angulaire propre à Struts.

    Merci bcp.
    "Ah oui ! Juste encore cette toute dernière petite question ..." (Columbo - Peter Falk)

  4. #4
    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 dis au début de la discussion que Authenticat_Contr est une servlet.
    Si c'est une servlet, elle doit être définie dans le web.xml.
    Si c'est une Action Struts, elle doit être définie dans le struts-config.xml.
    Modératrice Java - Struts, Servlets/JSP, ...

  5. #5
    Membre habitué Avatar de medbouh
    Inscrit en
    Mars 2006
    Messages
    152
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Mars 2006
    Messages : 152
    Points : 171
    Points
    171
    Par défaut
    Citation Envoyé par c_nvy Voir le message
    Tu dis au début de la discussion que Authenticat_Contr est une servlet.
    Si c'est une servlet, elle doit être définie dans le web.xml.
    Si c'est une Action Struts, elle doit être définie dans le struts-config.xml.
    c'est tout a fait correcte. car une servlet sera appeler pour traiter la requette de l'utilisateur en se basant sur le pattern attacher à cet servlet. ils sont definis dans le WEb.xml

    par contre dans struts les choses se font différemment, on prend par ex. dans ton cas Authenticat_Contr, les traitements que tu as definis dans cette servlet, qui concerne l'authentification, se verront partager entre une class Action et une class ActionForm. et par la suite tu definis une action dans ton fichier struts-config.xml qui va faire appel soit à la class ActionForm et/ou Action.

    bon je pense qu'il serai utile d'aller voir la FAQ de Struts..

    et si tu as des questions apres lecture de la FAQ tu revenir vers le forum.
    avant de poste pensez à c'est plus constructif.

    n'oublie pas d'utilise le bouton

    si vous trouvez la solution vous meme n'oublie pas de l'indiquer.

Discussions similaires

  1. Réponses: 23
    Dernier message: 06/03/2015, 14h11
  2. Transfert d'une requête ajax vers une servlet
    Par dverdin dans le forum Servlets/JSP
    Réponses: 0
    Dernier message: 19/11/2010, 16h24
  3. Transfert requête SQL QBE vers VBA
    Par Alain CARDINI dans le forum VBA Access
    Réponses: 5
    Dernier message: 29/05/2008, 05h11
  4. Réponses: 3
    Dernier message: 26/02/2007, 19h08
  5. transfert programme par bluetooth vers samsung SGH-E530
    Par impskil dans le forum Développement Mobile en Java
    Réponses: 3
    Dernier message: 26/02/2006, 22h32

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