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 :

Appel de Servlet


Sujet :

Servlets/JSP Java

  1. #1
    Expert éminent sénior

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Points : 79 915
    Points
    79 915
    Par défaut Appel de Servlet
    Bonjour,

    J'appel une servlet depuis un formulaire HTML que voici:

    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
     
    <html>
      <head>
        <title>Authentification</title>
      </head>
      <body>
            <H3>Authentification:</H3>
     
            <form method="POST" action="/Servlets/FormServlet">
                <p>Pseudo: <input type="text" name="pseudo" size="20"></p>
                <p>Mot de Passe: <input type="password" name="mdp" size="20"></p>
                <p><input type="submit" value="Se connecter"></p>
            </form>
      </body>
    </html>
    Mais il ne trouve pas la servlet. Voici mon arborescence:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Test
      |-- WebPages -- Login.html
      |
      |-- SourcePackage -- Servlets -- FormServlet.java
    Que puis-je tester comme url d'action ?

  2. #2
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 274
    Points : 4 141
    Points
    4 141
    Par défaut
    As tu déclaré ta servlet dans ton fichier web.xml ?

  3. #3
    Expert éminent sénior

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Points : 79 915
    Points
    79 915
    Par défaut
    Je viens de le rajouter mais ça ne fonctionne tjs pas.

    Je vais tester la même chose via une applet plutôt qu'une formulaire HTML. Merci quand même.

  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 dois la déclarer comme ceci :
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <servlet>
    	<servlet-name>FormServlet</servlet-name>
    	<servlet-class>Servlets.FormServlet</servlet-class>
    </servlet>
    <servlet-mapping>
    	<servlet-name>FormServlet</servlet-name>
    	<url-pattern>/FormServlet</url-pattern>
    </servlet-mapping>
    Et ensuite, il faut ajouter le contexte de l'application devant le path de la servlet dans l'attribut action :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <form method="POST" action="<%=request.getContextPath()%>/FormServlet">
    Sinon, pour information, suivant les conventions de nommage Java, les noms des packages doivent être en minuscules.
    Tu devrais donc renommer le package Servlets en servlets.

  5. #5
    Expert éminent sénior

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Points : 79 915
    Points
    79 915
    Par défaut
    Citation Envoyé par c_nvy Voir le message
    Et ensuite, il faut ajouter le contexte de l'application devant le path de la servlet dans l'attribut action :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <form method="POST" action="<%=request.getContextPath()%>/FormServlet">
    Sinon, pour information, suivant les conventions de nommage Java, les noms des packages doivent être en minuscules.
    Tu devrais donc renommer le package Servlets en servlets.

    En changeant le nom Servlets en servlets, il ne retrouvait plus ma servlet. Pourtant j'avais changé dans le Web.xml aussi. Et avec la majuscule, l'appel foir malgré le request.getContextPath().

  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
    As-tu pensé à modifier l'instruction package dans la servlet :

  7. #7
    Expert éminent sénior

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Points : 79 915
    Points
    79 915
    Par défaut
    Oui j'y ai pensé. Malheureusement, rien n'y fait.

  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
    Peux-tu montrer le web.xml complet et la jsp modifiée ?

    Et sinon, quelle url saisis-tu ? et quel message d'erreur as-tu ?

  9. #9
    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
    Au fait, je n'avais pas fait attention mais ta page de login doit être une jsp et non un html.

  10. #10
    Expert éminent sénior

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Points : 79 915
    Points
    79 915
    Par défaut
    Voici le web.xml complet:

    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
     
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="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>ServletControle</servlet-name>
            <servlet-class>Servlets.ServletControle</servlet-class>
        </servlet>
        <servlet>
            <servlet-name>FormServlet</servlet-name>
            <servlet-class>Servlets.FormServlet</servlet-class>
        </servlet>
        <servlet-mapping>
            <servlet-name>ServletControle</servlet-name>
            <url-pattern>/ServletControle</url-pattern>
        </servlet-mapping>
        <servlet-mapping>
            <servlet-name>FormServlet</servlet-name>
            <url-pattern>/FormServlet</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>

    Voici la servlet:

    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
     
    package servlets;
     
    import java.awt.Window;
    import java.awt.event.WindowStateListener;
    import java.io.*;
    import java.net.*;
    import java.sql.*;
    import javax.servlet.*;
    import javax.servlet.http.*;
     
    /**
     *
     * @author Lecomte
     * @version
     */
    public class FormServlet extends HttpServlet {
     
        public void init(ServletConfig config) throws ServletException
        {
            super.init(config);
        }
     
     
        protected void processRequest(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {       
            response.setContentType("text/html;charset=UTF-8");
            PrintWriter out = response.getWriter();
            out.close();
        }
     
     
        protected void doGet(HttpServletRequest req, HttpServletResponse resp)
        throws ServletException, IOException {
            //processRequest(req, resp);
     
        }
     
     
        protected void doPost(HttpServletRequest req, HttpServletResponse resp)
        throws ServletException, IOException {
            //processRequest(req, resp);
            resp.setContentType("Text/html");
            PrintWriter sortie = resp.getWriter();
     
            sortie.println("<HTML><HEAD><TITLE>");
            sortie.println("Caddie Virtuel");
            sortie.println("</TITLE></HEAD><BODY>");
     
            Connection con;
            Statement instruc;
            ResultSet rs;
     
            try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");}
            catch(ClassNotFoundException e){sortie.println("Driver JDBC-ODBC non chargé!");}
     
            try{
                con = DriverManager.getConnection("jdbc:odbc:CaddieBD","","");
                instruc = con.createStatement();
                rs = instruc.executeQuery("SELECT Password FROM Personnes WHERE Pseudo LIKE '" + req.getParameter("pseudo") + "'");
                while(rs.next()){
                if(rs.getString("Password").equals(req.getParameter("mdp")))
                {
                    //Mettre en session l'utilisateur
                    HttpSession session = req.getSession(true);
                    String loginSaisi = req.getParameter("pseudo");
                    session.setAttribute("session.login", loginSaisi);
     
                    sortie.println("<H2>Bonjour " + req.getParameter("pseudo") + ".</H2>");
                    sortie.println("<p>Voici les différents liens auxquelles vous avez accès:</p>");
                    sortie.println("<a href=\"http://localhost:8087/ServletControl?action=Authentification&pseudo=" + req.getParameter("pseudo") + "> Brochures disponibles</a><br>");
                }   
                else
                    //sortie.println("Snif...");
                    resp.sendRedirect("http://localhost:8087/Test/Login.html");
                }
            }catch(SQLException e){sortie.println("<p>Erreur JDBC-ODBC: " + e.getMessage() + " --- " + e.getSQLState() + "</p>");}
     
            sortie.println("</BODY></HTML>");
            sortie.close();
        }

    L'URL saisie est:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <form method="POST" action="<%=request.getContextPath()%>/FormServlet">
                <p>Pseudo: <input type="text" name="pseudo" size="20"></p>
                <p>Mot de Passe: <input type="password" name="mdp" size="20"></p>
                <p><input type="submit" value="Se connecter"></p>
            </form>

    Je ne reçois pas de message d'erreur. J'ai juste une page vide. Hors il devrait me construire une page HTML avec un lien.

  11. #11
    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
    Ta page de login est bien une page jsp ?

    Sinon, tu n'as pas modifié le nom du package dans le web.xml :
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        <servlet>
            <servlet-name>FormServlet</servlet-name>
            <servlet-class>Servlets.FormServlet</servlet-class>
        </servlet>
    Il faut mettre Servlets avec un "s" minuscule :
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        <servlet>
            <servlet-name>FormServlet</servlet-name>
            <servlet-class>servlets.FormServlet</servlet-class>
        </servlet>

    C'est quand tu soumets le formulaire que ça ne fonctionne pas ou l'affichage de la page de login ?

  12. #12
    Expert éminent sénior

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Points : 79 915
    Points
    79 915
    Par défaut
    J'avais bien mit "servlets" et non "Servlets" mais je suis revenu en arrière vu que cette piste ne donnait rien.

    Mon appel n'est pas dans une jsp mais une page html.
    Ca a déjà fonctionné depuis une page html (sauf que je ne faisais pas de getContext()).

    Je réessaie tout, en minuscule et depuis une jsp.

  13. #13
    Expert éminent sénior

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Points : 79 915
    Points
    79 915
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    L'enrobeur (wrapper) ne peut trouver la classe servlet servlets.FormServlet ou une classe dont elle dépend

    C'est parce que j'ai changé en minuscules et tout est bien en minuscules. Je reçois ceci lorsque je fait le submit.

  14. #14
    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
    Apparemment, il ne trouve pas FormServlet.class sous WEB-INF/classes/servlets.

  15. #15
    Expert éminent sénior

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Points : 79 915
    Points
    79 915
    Par défaut
    Et pourtant il y est.
    Bien ben merci quand même pour ton aide.

  16. #16
    Expert éminent sénior

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Points : 79 915
    Points
    79 915
    Par défaut
    Bonne nouvelle. J'ai remis les majuscules et ma servlet est appelée. Maintenant j'ai des erreurs dans mon code, mais ça, c'est une autre histoire.

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

Discussions similaires

  1. appeler une servlet depuis javascript
    Par root76 dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 22/05/2007, 11h12
  2. menu dynamique et appel des servlets
    Par Smix007 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 29/01/2007, 14h22
  3. appel de servlet à partir de jsp
    Par eyango dans le forum Servlets/JSP
    Réponses: 13
    Dernier message: 20/01/2007, 00h18
  4. jsp et appel de servlet
    Par Glum147 dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 26/10/2006, 14h38
  5. Solutions pour appeler un servlet
    Par st0ne dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 09/08/2006, 12h07

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