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 :

login ajax-servlet: servlet ne rend pas la reponse au code ajax


Sujet :

Servlets/JSP Java

  1. #1
    Membre du Club
    Inscrit en
    Décembre 2009
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 68
    Points : 53
    Points
    53
    Par défaut login ajax-servlet: servlet ne rend pas la reponse au code ajax
    J'ai un formulaire de connexion (name et password) et je veux que lorsque l'utilisateur tape son nom et son password, un code ajax s'execute et fais appel à une servlet qui fait la verification et elle rend le resulta(succées ou echec)

    voici le code de mon formulaire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <form action="" method="GET" id="login_frm">
            <label ><b>Username: </b></label>
            <input class="field" type="text" id="log" value="" size="23" />
            <label ><b>Password:</b></label>
            <input class="field" type="password"  id="pwd" size="23" />
            <input type="submit"  value="" class="button_login" />
    </form>
    et voici le code ajax:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    $(document).ready(function(){
     
            $("#login_frm").submit(function(){
            $.ajax({
                type: 'GET',
                url: '/RecommandationDefault/connexion?user='+$('#log').val()+'&pwd='+$('#pwd').val(),
                success: function(msg){
                    alert(msg);
                  }
              });
            });
                ........
     
        }
    j'ai simplifié le traitement de ma servlet de tel sort quand je clique sur le bouton login, la servlet execute: out.write("ok") et dans ajax je fais un alert de response pour verifier que la communication s'effectue.

    le code de ma servlet(connexion.java)
    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
    @WebServlet(name = "connexion")
    public class connexion extends HttpServlet {
     
        /**
         * Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
         * @param request servlet request
         * @param response servlet response
         * @throws ServletException if a servlet-specific error occurs
         * @throws IOException if an I/O error occurs
         */
        protected void processRequest(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
            response.setContentType("text/html;charset=UTF-8");
            PrintWriter out = response.getWriter();
            try {
     
            } finally {
                out.close();
            }
        }
     
        @Override
        protected void doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
             PrintWriter out = response.getWriter();
            System.out.println("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^");
     
            out.write("ok");
        }
     
        @Override
        protected void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
            processRequest(request, response);
        }
     
        @Override
        public String getServletInfo() {
            return "Short description";
        }// </editor-fold>
     
    }
    Probleme: dans la consule s'affiche:^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    Mais aucune alert n'est declenché.



    Merci d'avance

  2. #2
    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
    @WebServlet("/connexion") pour url: '/RecommandationDefault/connexion?user='+$('#log').val()+'&pwd='+$('#pwd').val(),
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre du Club
    Inscrit en
    Décembre 2009
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 68
    Points : 53
    Points
    53
    Par défaut
    je l'ai fais et toujours le même problème

  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
    essaye avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    url: '/connexion?user='+$('#log').val()+'&pwd='+$('#pwd').val(),
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    url: './connexion?user='+$('#log').val()+'&pwd='+$('#pwd').val(),
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre du Club
    Inscrit en
    Décembre 2009
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 68
    Points : 53
    Points
    53
    Par défaut
    J'ai pas un probleme d'executer le code de la servlet, Mon probléme est dans out.write:

    j'explique:

    code ajax:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
       $("#login_frm").submit(function(){
        $.ajax({
            type: 'GET',
            dataType:'html',
            url: '/RecommandationDefault/connexion?user=appachito',
            success: function(msg){
                alert(msg);
              }
          });
        });
    et code 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
    /*
     * To change this template, choose Tools | Templates
     * and open the template in the editor.
     */
     
    package package1;
     
    import java.io.IOException;
    import java.io.PrintWriter;
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
     
    /**
     *
     * @author appachito
     */
    @WebServlet(name = "/connexion")
    public class connexion extends HttpServlet {
     
        /**
         * Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
         * @param request servlet request
         * @param response servlet response
         * @throws ServletException if a servlet-specific error occurs
         * @throws IOException if an I/O error occurs
         */
        protected void processRequest(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
            response.setContentType("text/html");
            PrintWriter out = response.getWriter();
            try {
     
            } finally {
                out.close();
            }
        }
     
        @Override
        protected void doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
            System.out.println("Demarrage du servlet");
            response.setContentType("text/html");
            response.setCharacterEncoding("UTF-8");
            PrintWriter out = response.getWriter();
            String n1=request.getParameter("user");
            System.out.println("utilisateur= "+n1);
            out.write("<b>ok</b>");
        }
     
        @Override
        protected void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
            processRequest(request, response);
        }
     
        @Override
        public String getServletInfo() {
            return "Short description";
        }// </editor-fold>
     
    }


    j'ai dans la console:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    INFO: Demarrage du servlet
    INFO: utilisateur= appachito

    donc, l'alert ne se declenche pas ce qui veut dire y a un soucis dans out.write

  6. #6
    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 un vrai chantier ta servlet... doGet fait un truc, doPost un autre pas fini
    Rajoute
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    out.flush();
    out.close();
    derrière ton out.write(...)
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Membre du Club
    Inscrit en
    Décembre 2009
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 68
    Points : 53
    Points
    53
    Par défaut
    Citation Envoyé par OButterlin Voir le message
    C'est un vrai chantier ta servlet... doGet fait un truc, doPost un autre pas fini
    Rajoute
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    out.flush();
    out.close();
    derrière ton out.write(...)
    Toujours le même probléme...

  8. #8
    Membre du Club
    Inscrit en
    Décembre 2009
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 68
    Points : 53
    Points
    53
    Par défaut
    Je partage avec vous la solution, peut être servira pour d'autres développeur.

    tout d’abord il faut: Stopper la requête submit

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $("#login_frm").submit(function(e){
                   e.preventDefault();
            });
    Ensuite la gestion de l’événement clique sur le bouton qui lance une requete ajax à une servlet connexion.java avec deux paramètres:

    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
     $(".button_login").click(function(){
             var user=$('#log').val();
             var pwd=$('#pwd').val();
            $.ajax({
                type: 'GET',
                dataType:'html',
                url: encodeURI('/RecommandationDefault/connexion?user='+user+'&pwd='+pwd),
                success: function(msg){
                         .............
                    }
                    else
                        alert("user ou mot de passe incorrect");
                  },
                error: function(xhr,err) {
                    alert('Ajax readyState: '+xhr.readyState+'\nstatus: '+xhr.status + ' ' + err);
                }
              });
        });
    et voici le code de la servlet connexion.java qui reçoit les parametre et y utiliser::

    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
    @Override
        protected void doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
            System.out.println("Demarrage du servlet connexion");
            response.setContentType("text/html;charset=UTF-8");
            request.setCharacterEncoding("utf-8");
            response.setHeader("Access-Control-Allow-Origin", "*");
            response.setHeader("Access-Control-Allow-Methods", "POST");
            response.setHeader("Access-Control-Allow-Headers", "Content-Type");
            response.setHeader("Access-Control-Max-Age", "86400");
            response.setHeader("Cache-control", "no-cache, no-store");
            response.setHeader("Pragma", "no-cache");
            response.setHeader("Expires", "-1");
     
            PrintWriter out = response.getWriter();
            UserBean user = new UserBean();
            user.setUserName(request.getParameter("user"));
            user.setPassword(request.getParameter("pwd"));
     
            user = UserDAO.login(user);
     
                 if (user.isValid())
                 {
     
                      out.print(user.getUsername());
                 }
     
             else
                   out.print("echec");
        }

    et ça a trés bien fonctionné.

    Bon courage pour tout le monde.

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

Discussions similaires

  1. Le package javax.servlet.http. n'existe pas
    Par sophie1909 dans le forum JBuilder
    Réponses: 5
    Dernier message: 25/08/2009, 03h17
  2. Réponses: 2
    Dernier message: 22/11/2006, 17h12
  3. Techno Ajax: javascript, servlet java
    Par xfacq dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 07/08/2006, 17h08
  4. Etat HTTP 404 - Servlet action n'est pas disponible.???
    Par iftolotfi dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 05/05/2006, 14h44
  5. [Servlet action n'est pas disponible]
    Par JauB dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 04/11/2005, 09h23

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