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 :

Probleme de servlet


Sujet :

Servlets/JSP Java

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Probleme de servlet
    Bonjour ,

    J'ai un problème pour récupérer mes variables d'une page HTML du a son format complexe. En effet j'aimerais récupérer l'id le type et cmd par le biais de la var data et par le biais d'une servlette.


    Code HTML :

    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
     
    <input id="MyButton" type="button" value="Submit">
     
            <script>
                var data = {
                    equipment: {
                        id: "ESC_1",
                        type: "ESC",
                        cmd: "UP"
                    }
                }; 
             
                $('#MyButton').click(function() {
                    $.post( "MyServlet", data );
                });
            </script>
    Mon but c'est à travers la pression du bouton, j'arrive a récupérer les variables id, type et cmd au sein de la console Eclipse && d'une servlet.

    Dans ma servlet, dans la méthode doPost, cette requeste me retourne nul.

    Code servlet.java:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    String data = (request.getParameter("data"));
            System.out.println(data);
    Je n'arrive pas a récupérer les variables dû a la hiérarchie de la variable (dans data il y a equipment puis dans equipment id, type, cmd)

    Merci de votre aide, cordialement

  2. #2
    Membre confirmé Avatar de freddou17
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2013
    Messages
    341
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2013
    Messages : 341
    Points : 566
    Points
    566
    Par défaut
    Slt,

    essaie avec equipement plutôt que data... data est le nom de ta variable et non son contenu. Regardes $.post sur l'api Jquery

    ++
    "Aucun de nous ne sait ce que nous savons tous, ensemble."
    Lien vers mon appli Funcash n'hésitez pas à donner votre avis

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Bonjour,
    Merci de votre réponse cependant je reste toujours bloquer même en utilisant le nom "equipment". Il me renvoi toujours la même erreur, c'est a dire null.

    On m'a parler d'utiliser du JsonObject afin de vouloir faire ce que je désire. cepandant, même après documentation, le Json reste pour moi très flou.

    Merci d'avance

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    C'est pas vraiment la peine de t'embêter à gérer du JSON côté Java, c'est pas l'idée de la chose.

    c'est juste que $.post() ne peut pas deviner comment il doit envoyer cet objet.

    Au lieu de

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    var data = {
                    equipment: {
                        id: "ESC_1",
                        type: "ESC",
                        cmd: "UP"
                    }
                };
    il faudrait

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    var data = {
      id: "ESC_1",
      type: "ESC",
      cmd: "UP"
    };
    Et côté Java ça devrait être

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    request.getParameter("id");
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre régulier
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Septembre 2002
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Septembre 2002
    Messages : 74
    Points : 88
    Points
    88
    Par défaut Une autre approche
    Salut, je te propose une autre approche.

    Visiblement, tu veux envoyer une instance d'Equipment du client vers le serveur via une servlet
    A la réception dans la servlet, tu vas probablement convertir ton objet json en objet JAVA, pour l'utiliser dans tes classes métiers.
    Ta classe métier traitant ton Equipment ressemble à quelque chose comme ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public class EquipmentManager {
       public void processEquipment(Equipment equipment) {
          ...
       }
    }
    Je te propose d'utiliser le framework ocelotds te permettant de te passer de servlet ou autre service REST en utilisant CDI et Websocket.
    Tu ecris ta classe métier comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    @DataService(resolver = Constants.Resolver.CDI)
    public class EquipmentManager {
       public void processEquipment(Equipment equipment) {
          ...
       }
    }
    Enfin dans ton code javascript, tu écris naturellement :
    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
     
    var equipment = {
        "id": "ESC_1",
        "type": "ESC",
        "cmd": "UP"
    }
    equipmentManager.processEquipment(equipment).then(
       function(res) {
       // process done
       }
    ).catch(
       function(fault) {
          //  process fail
       }
    );
    Avec ce framework, tu pourras te concentrer sur le métier de ton application et non sur comment envoyer une info du client vers le serveur...

    Enjoy
    Ocelotds : java/javascript communication framework
    https://github.com/ocelotds/ocelot
    JEE7, EJB 3.X, JPA 2.X, Servlet 3.X, CDI 1.1, Websocket, JAX-RS....
    Netbeans 8 - Glassfish 4.x

Discussions similaires

  1. probleme avec servlet
    Par lmilhi dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 19/04/2007, 20h06
  2. probleme deploiment servlet
    Par isorn dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 08/03/2007, 09h47
  3. probleme de servlet
    Par samira84 dans le forum Tomcat et TomEE
    Réponses: 2
    Dernier message: 02/02/2007, 02h34
  4. eclipse 3.1 apache 5.0.28 j2ee - Problème de servlet
    Par chernob dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 10/07/2006, 12h12
  5. Probleme SessionBean Servlet
    Par metalpetsFR dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 22/05/2006, 16h28

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