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 :

[struts]erreur 404:ne trouve pas l'action...


Sujet :

Struts 1 Java

  1. #1
    Membre habitué Avatar de questionneuse
    Inscrit en
    Décembre 2005
    Messages
    319
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 319
    Points : 127
    Points
    127
    Par défaut [struts]erreur 404:ne trouve pas l'action...
    Salut ,

    j'ai fais un formulaire avec une page jsp administrationForm.
    J'ai fait une action correspondant à un formulaire dans cette page ContactAjoutAction.
    Lorsque l'utilisateur ajoutera un contact c'est cette action qui sera activé.
    Mais lorsque j'excute la page administration et que j'utilise cette fonctionnalité, une page d'erreur m'indique
    qu'il ne trouve pas le servlet action or dans le fichier de config j'ai mis le bon package..
    voici l'erreur qu'il m'affiche:
    Erreur 404
    type Rapport d'état
    message Servlet action n'est pas disponible.
    description La ressource demandée (Servlet action n'est pas disponible.) n'est pas disponible.
    voici l'action défini dans le fichier de config:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <action path="/InputSubmit"
                    type="fr.edition.eni.action.ContactAjoutAction"
                    name="administrationForm"
                    scope="request"
                    input="/Web Pages/administrationForm.jsp">
                <forward name="success" path="/Web Pages/administrationForm.jsp"></forward>
                <forward name="erreur" path="/Web Pages/administrationForm.jsp"></forward>
            </action>
    le code de contactAjoutAction:

    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 ContactAjoutAction extends Action {
     
        public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, 
                HttpServletResponse response)throws Exception{
     
        AdministrationForm monAdministrationForm=(AdministrationForm) form;
        DataSource ds=getDataSource(request, "enidb");
        Connection  cnx=ds.getConnection();
        Contact monContact= new Contact();
        monContact.setNomContact(monAdministrationForm.getNomContact());
        monContact.setMailContact(monAdministrationForm.getMailContact());
        monContact.setTelephoneContact(monAdministrationForm.getTelephoneContact());
        monContact.setFonctionContact(monAdministrationForm.getFonctionContact());
        monContact.setEquipeContact(monAdministrationForm.getEquipeContact());
        return monContact.insertContact(mapping,cnx);
        }
     
     
    }
    le code du form correspondant:

    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    <!--début du formulaire pour ajouter contact-->
     
                                      <form method=post action="InputSubmit.do">
                                        <td
     style="font-family: Arial; font-weight: bold;"><small>Noms</small></td>
                                        <td
     style="font-family: Arial; font-weight: bold;"><small><input
     size="25" name="ajoutdossier"></small></td>
                                        <td
     style="font-family: Arial; font-weight: bold;"><small>Fonctions</small></td>
                                        <td
     style="font-family: Arial; font-weight: bold;"><small><input
     size="25" name="ajoutdossier"></small></td>
                                        <td></td>
                                      </tr>
                                      <tr>
                                        <td
     style="font-family: Arial; font-weight: bold;"><small>Mail</small></td>
                                        <td
     style="font-family: Arial; font-weight: bold;"><small><input
     size="25" name="ajoutdossier"></small></td>
                                        <td
     style="font-family: Arial; font-weight: bold;"><small>T&eacute;l&eacute;phone</small></td>
                                        <td
     style="font-family: Arial; font-weight: bold;"><small><input
     size="25" name="ajoutdossier"></small></td>
     <td><input type="submit" style="width: 100px; height: 20px;" value="ajouterContact" name="AjoutContact" />
     </td>
     <!--fin du formulaire pour ajouter contact-->
    Si quelqu'un voit ou et l'erreur ?
    Faites moi confiance... je suis un membre éclairé

  2. #2
    Membre habitué Avatar de questionneuse
    Inscrit en
    Décembre 2005
    Messages
    319
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 319
    Points : 127
    Points
    127
    Par défaut
    Voila ce que m'affiche la log:
    4 mai 2006 16:38:14 org.apache.catalina.core.ApplicationContext log
    INFO: La servlet action est marqué comme indisponible
    4 mai 2006 16:38:14 org.apache.catalina.core.StandardContext loadOnStartup
    GRAVE: La servlet /WebApplication2 a généré une exception "load()"
    javax.servlet.UnavailableException: Initializing application data source enidb
    at org.apache.struts.action.ActionServlet.initModuleDataSources(ActionServlet.java:812)
    at org.apache.struts.action.ActionServlet.init(ActionServlet.java:335)
    at javax.servlet.GenericServlet.init(GenericServlet.java:211)
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1091)
    at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:925)
    at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:3857)
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4118)
    at org.apache.catalina.core.StandardContext.reload(StandardContext.java:2930)
    at org.apache.catalina.manager.ManagerServlet.reload(ManagerServlet.java:906)
    at org.apache.catalina.manager.ManagerServlet.doGet(ManagerServlet.java:353)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
    at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:168)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:744)
    at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
    at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
    at java.lang.Thread.run(Thread.java:595)
    4 mai 2006 16:38:19 org.apache.catalina.core.StandardWrapperValve invoke
    INFO: La servlet action est actuellement indisponible
    Faites moi confiance... je suis un membre éclairé

  3. #3
    Membre éprouvé
    Avatar de yolepro
    Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2002
    Messages
    918
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Mai 2002
    Messages : 918
    Points : 1 144
    Points
    1 144
    Par défaut
    Montre nous ton web.xml.

    Le problème vient du fait qu'il n'arrive pas a mapper tes action avec la servlet servletAction
    Etre c'est etre relatif.

  4. #4
    Membre habitué Avatar de questionneuse
    Inscrit en
    Décembre 2005
    Messages
    319
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 319
    Points : 127
    Points
    127
    Par défaut
    Voici le web.xml mais je n'y ai pas touché il a été généré automatiquement..
    J'utilise netbeans..

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlnssi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
    <servlet>
    <servlet-name>action</servlet-name>
    <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
    <init-param>
    <param-name>config</param-name>
    <param-value>/WEB-INF/struts-config.xml</param-value>
    </init-param>
    <init-param>
    <param-name>debug</param-name>
    <param-value>2</param-value>
    </init-param>
    <init-param>
    <param-name>detail</param-name>
    <param-value>2</param-value>
    </init-param>
    <load-on-startup>2</load-on-startup>
    </servlet>
    <servlet-mapping>
    <servlet-name>action</servlet-name>
    <url-pattern>*.do</url-pattern>
    </servlet-mapping>
    <session-config><session-timeout>
    30
    </session-timeout></session-config><welcome-file-list><welcome-file>
    index.jsp
    </welcome-file></welcome-file-list></web-app>
    Faites moi confiance... je suis un membre éclairé

  5. #5
    Membre éprouvé
    Avatar de yolepro
    Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2002
    Messages
    918
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Mai 2002
    Messages : 918
    Points : 1 144
    Points
    1 144
    Par défaut
    As tu bien vérifié que la Servlet org.apache.struts.action.ActionServlet etait bien a sa place ?

    Il semble qu'il n'arrive pas a accéder a cette classe.
    Etre c'est etre relatif.

  6. #6
    Membre éprouvé
    Profil pro
    Développeur Back-End
    Inscrit en
    Avril 2003
    Messages
    782
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Back-End

    Informations forums :
    Inscription : Avril 2003
    Messages : 782
    Points : 935
    Points
    935
    Par défaut
    il semble que tu ais un problème avec les datasources définies dans le struts-config.xml

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     GRAVE: La servlet /WebApplication2 a généré une exception "load()"
    javax.servlet.UnavailableException: Initializing application data source enidb
    at org.apache.struts.action.ActionServlet.initModuleDataSources(ActionServlet.java:812)

  7. #7
    Membre habitué Avatar de questionneuse
    Inscrit en
    Décembre 2005
    Messages
    319
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 319
    Points : 127
    Points
    127
    Par défaut
    Citation Envoyé par yolepro
    As tu bien vérifié que la Servlet org.apache.struts.action.ActionServlet etait bien a sa place ?

    Il semble qu'il n'arrive pas a accéder a cette classe.
    Oui, netbeans importe directement la lib de struts, et j'ai vérifier le .class de ActionServlet est effectivement dans org.apache.struts.action

    il semble que tu ais un problème avec les datasources définies dans le struts-config.xml
    Oui ca je m'en doute vu que c'est mon premier essai avec la base je suis pas sur que j'ai mis ce qu'il fallait, mais est ce que cela peut etre la raison pour laquelle il ne trouve pas l'ActionServlet -_-"

    Pour la base j'ai mis dans la lib du projet le jar mysql-connector-java-3.1.12-bin.jar

    et dans le fichier de config:

    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    <data-sources>
    <data-source type="" key="enidb"><!--c'est le nom que j'utilise dans mes actions -->
    <set-property
    property="driverClassName"
    value="com.mysql.jdbc.Driver"/>
    <set-property
    property="url"
    value="jdbc:mysql:local:3306/strutseni"/><!-- à modifier certainement-->
    <set-property
    property="username"
    value="f"/>
    <set-property
    property="password"
    value="f"/>
    <set-property
    property="maxActive"
    value="10"/>
    <set-property
    property="maxWait"
    value="5000"/>
    <set-property
    property="defaultAutoCommit"
    value="false"/>
    <set-property
    property="defaultReadOnly"
    value="false"/>
     
    </data-source>
    </data-sources>
    


    pour le code de l'action , j'ai écrit ca:

    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 ContactAjoutAction extends Action {
     
    public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, 
    HttpServletResponse response)throws Exception{
     
    AdministrationForm monAdministrationForm=(AdministrationForm) form;
    DataSource ds=getDataSource(request, "enidb");
    Connection cnx=ds.getConnection();
    Contact monContact= new Contact();
    monContact.setNomContact(monAdministrationForm.getNomContact());
    monContact.setMailContact(monAdministrationForm.getMailContact());
    monContact.setTelephoneContact(monAdministrationForm.getTelephoneContact());
    monContact.setFonctionContact(monAdministrationForm.getFonctionContact());
    monContact.setEquipeContact(monAdministrationForm.getEquipeContact());
    // return monContact.insertContact(mapping,cnx);
    return null;
    }
    }
    dans le javabean:

    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 ActionForward insertContact(ActionMapping mapping, Connection cnx) throws SQLException{
    PreparedStatement pstmt;
    try{
    pstmt=cnx.prepareStatement("insert into contact(nom, fonction, mail, telephone, equipe) values (?,?,?,?,?)");
    pstmt.setString(1, nomContact);
    pstmt.setString(2, fonctionContact);
    pstmt.setString(3, mailContact);
    pstmt.setString(4, telephoneContact);
    pstmt.setString(5, equipeContact);
    cnx.commit();
    return mapping.findForward("success");
    }catch(Exception e){
    cnx.rollback();
    return mapping.findForward("erreur");
    }finally{
    cnx.close();
    }
    }
    Faites moi confiance... je suis un membre éclairé

  8. #8
    Membre habitué Avatar de questionneuse
    Inscrit en
    Décembre 2005
    Messages
    319
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 319
    Points : 127
    Points
    127
    Par défaut
    j'ai mis en commentaire tous les passages en rapport avec la base de données (dans le fichier de config. , dans la classe action)
    Et ca marche -_-

    Alors l'erreur vient de la partie du prog en rapport avec la base qui est dans le fichier de conf ou dans la partie de code qui est dans le fichier action.

    Je pense plutot que c'est dans le fichier de conf j'utilise mysql server et j'ai cherché sur le net mais je ne trouve pas d'exmple ...
    Faites moi confiance... je suis un membre éclairé

Discussions similaires

  1. [Action Struts 2 / JSON] Erreur 404
    Par dude_dev dans le forum Struts 2
    Réponses: 1
    Dernier message: 13/12/2012, 15h26
  2. erreur 2465 ne trouve pas le champ recordset
    Par bellemeche dans le forum VBA Access
    Réponses: 1
    Dernier message: 17/10/2010, 13h18
  3. erreur : Windows ne trouve pas "copy.exe"
    Par Blue_Strike dans le forum Windows XP
    Réponses: 2
    Dernier message: 17/12/2006, 16h20
  4. [struts][tomcat]erreur 404 suite à un forward
    Par minique dans le forum Struts 1
    Réponses: 3
    Dernier message: 06/09/2004, 10h11
  5. [ Struts ] Erreur : l'action n'est jamais appelé
    Par romain3395 dans le forum Struts 1
    Réponses: 3
    Dernier message: 25/06/2004, 14h59

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