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 :

Jsp -> Javascript -> Servlet


Sujet :

Servlets/JSP Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 84
    Par défaut Jsp -> Javascript -> Servlet
    Bonjour,
    Voilà mon problème :
    J'ai un formulaire que l'utilisateur doit remplir.
    Je dois effectuer une vérification à chaque fois qu'un champ est rempli. Mais pas une vérification syntaxique, je dois me connecter à une table et vérifier que les champs remplis n'existent pas déjà.
    La partie connexion à la Bdd se fait depuis du code "métier" java que j'appelle dans mes servlet.
    Ce que j'aimerais faire, c'est, grâce à un évènement javascript (type onClick), pouvoir appeler un Servlet afin de checker la Bdd, le tout sans quitter le formulaire ou je suis (au pire un rechargement de la page avec les infos gardées telles quelles).
    Déjà je voulais savoir si c'était possible (la relation javascript côté client & le code métier côté serveur me parait peu possible).
    Et si oui, si quelqu'un aurait une piste à me donner? J'ai déjà pas mal chercher sur internet, mais je n'ai pas trouvé de façon de faire sans ouvrir une nouvelle fenêtre.
    Merci d'avance.
    Bdloul

  2. #2
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Par défaut
    Bonjour,
    Peux tu clarifier ce que t'entends par :
    Je dois effectuer une vérification à chaque fois qu'un champ est rempli.
    ? C'est au sortir du champ ou tu veux faire un appel serveur à chaque saisie d'un caractère dans le champ?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 84
    Par défaut
    Au sortir du champ!

  4. #4
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Par défaut
    Et après la vérification dans la bdd, qu'est il censé se passer? Si le mot saisi n'existe pas en bdd, tu veux pouvoir une erreur en restant sur la même page c'est ça?

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 84
    Par défaut
    Typiquement, ce serait de la forme :

    champ de texte type : User : XXXXXX
    Dès qu'on sort du champ, je voudrais appeler une classe java qui me permette de checker l'existence de l'user dans ma BDD
    existe => petite croix rouges à côté.
    existe pas => petite croix verte à côté.
    Voilà voilà..

  6. #6
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Par défaut
    En fait tu vas devoir faire un appel Ajax via du javascript à la perte du focus sur le dernier champ saisi. L'évènement de perte du focus s'appelle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    onblur="tonAppelFonctionJavascriptLancantAppelAjax()"
    , et au retour de ton appel js, tu vas récupérer la réponse et l'écrire dans ta page en cours. Ce sans recharge de la page. Tu trouveras un exemple bien détaillé dans les cours et tutoriels pour apprendre Java. Tu pourras nous poser des questions progressivement si tu bloques, mais ça devrait pouvoir marcher.

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 84
    Par défaut
    Merci bien, moi qui pensait que l'ajax c'était juste un javascript bis, je suis agréablement surprise. Le principe des requêtes asynchrones va me permettre de résoudre mon problème. Je laisse le post en non résolu si jamais j'ai un problème.

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 84
    Par défaut
    C'est bon.
    Merci.

  9. #9
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Par défaut
    Citation Envoyé par Bdloul Voir le message
    C'est bon.
    Merci.
    C'est tant mieux, mais pour aider ceux qui pourront avoir la même difficulté ce serait top que tu mettes un petit bout de code de la fonction javascript appelée, du bout du traitement de la servlet et le bout de code javascript récupérant la réponse de la servlet pour l'envoyer à ta jsp.

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 84
    Par défaut
    Bien sur.
    Code javascript :
    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
     
    function valider() {
    	var donnees = document.getElementById("user_id");
    	var url = "check?valeur=" + escape(donnees.value);
    	if (window.XMLHttpRequest) {
    		requete = new XMLHttpRequest();
    		requete.open("GET", url, true);
    		requete.onreadystatechange = majIHM;
    		requete.send(null);
    	} else if (window.ActiveXObject) {
    		requete = new ActiveXObject("Microsoft.XMLHTTP");
    		if (requete) {
    			requete.open("GET", url, true);
    			requete.onreadystatechange = majIHM;
    			requete.send();
    		}
    	} else {
    		alert("Le navigateur ne supporte pas la technologie Ajax");
    	}
    }
     
    function majIHM() {
    	var message = "";
     
    	if (requete.readyState == 4) {
    		if (requete.status == 200) {
    			// exploitation des données de la réponse
    			var messageTag = requete.responseXML
    					.getElementsByTagName("message")[0];
    			message = messageTag.childNodes[0].nodeValue;
    			mdiv = document.getElementById("validationMessage");
    			//traitement
    		} else {
    			alert('Une erreur est survenue lors de la mise à jour de la page.'
    					+ '\n\nCode retour = ' + requete.statusText);
    		}
    	}
    L'appel sur la jsp (code html) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    					<td><input type="text" name="userid" id="user_id" value=""
    						onblur="valider()" /></td>
    Le servlet appelé :
    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
     
    public class CheckLive extends HttpServlet {
     
    	public void doGet(HttpServletRequest request, HttpServletResponse response)
    			throws IOException, ServletException {
    		System.out.println("test");
    		String valeur = request.getParameter("valeur");
    		String message = "";
    		response.setContentType("text/xml");
    		response.setHeader("Cache-Control", "no-cache");
    		if (valeur != null) {
    		//traitement et remplissage de la String message
    		}
    		System.out.println("message : " + message);
    		response.getWriter().write("<message>" + message + "</message>");
    	}
     
    	public void doPost(HttpServletRequest request, HttpServletResponse response)
    			throws IOException, ServletException {
    		doGet(request, response);
    	}
    }
    Le bout de web.xml intéressant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    	<servlet>
    		<servlet-class>manager.user.servlet.CheckLive</servlet-class>
    		<servlet-name>check</servlet-name>
    	</servlet>
    	<servlet-mapping>
    		<servlet-name>check</servlet-name>
    		<url-pattern>/check</url-pattern>
    	</servlet-mapping>
    Une dernière remarquer :
    le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var url = "check?valeur=" + escape(donnees.value);
    renvoit au mapping du servlet dans le web.xml

  11. #11
    Membre averti
    Femme Profil pro
    Inscrit en
    Avril 2012
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Avril 2012
    Messages : 34
    Par défaut
    Bonjour à tous,
    Je me permet de relancer le sujet car j'ai à peu de choses près le même soucis. En effet, je dois insérer sur chaque ligne d'un tableau un bouton, qui me permet de lancer un servlet. Ceci fait, lorsque je clique sur ce bouton, ma servlet n'est pas lancée, par contre le submit me renvoie sur la jsp elle-même (search.jsp), et elle est vide. Voici un peu de code :

    Ma ligne de tableau dans search.jsp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <td><input type="submit" value="->" onclick="detailDisplaying(\"123456789\")"/></td>
    Mon script (placé dans le body de search.jsp):
    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
    <script language="javascript" type="text/javascript">
        function detailDisplaying(String ipp)
        {
            var url = "detail.do?ipp="+ipp;
            if (window.XMLHttpRequest)
            {
                    request = new XMLHttpRequest();
                    request.open("GET", url, true);
                    request.send(null);
            } else if (window.ActiveXObject) {
                    request = new ActiveXObject("Microsoft.XMLHTTP");
                    if (request) {
                            request.open("GET", url, true);
                            request.send();
                    }
            } else {
                    alert("Le navigateur ne supporte pas la technologie Ajax");
            }
        }
    </script>
    Ma servlet appellée est bien référencée dans le fichier web.xml (quand je lance l'URL .../detail.do, ça fonctionne).

    Je suis persuadée que mon erreur est simple, mais je ne la trouve pas ...
    Merci de votre aide !


    Petite précision :
    J'ai aussi tenté de suivre ce post : http://www.developpez.net/forums/d10...ligne-tableau/

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <td><form name="buttonForm" method="get"><input type="submit" value="->" onclick="detailDisplaying(\"123456789\")\"/></form></td>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <script language="javascript" type="text/javascript">
        function detailDisplaying(ipp)
        {
            document.forms["buttonForm"].action="detailPatient.do?ipp="+ipp;
            document.forms["buttonForm"].submit();
         }
    </script>
    Le résultat est exactement le même, à savoir page search.jsp vide ... J'ai l'impression que ma fonction ne passe pas du tout, j'ai tenté de mettre un alert(ipp), absolument rien ne s'est affiché à l'écran.

  12. #12
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Par défaut
    Bonjour,
    En tant normal il fallait créer un nouveau post, quitte à y référencer ce post qui a déjà été résolu, mais bon je laisse le soin aux modérateurs de gérer ça. Mais pour ta question, as tu testé que tu rentrais bien dans ton fonction javascript? Pour ce faire mets un alert juste à l'entrée de ta fonction. Et de manière générale moi je mets toujours un bloc try..catch dans mes fonctions javascript ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    function faitQuelQueChose(){
     
    try{
    ...
    }catch(e){
    alert("Erreur de type :"+e);
    }
     
    }
    ça t'aidera pas mal, fais ça et redis nous.

  13. #13
    Membre averti
    Femme Profil pro
    Inscrit en
    Avril 2012
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Avril 2012
    Messages : 34
    Par défaut
    Merci pour ton retour rapide.
    Désolée pour la réponse du post, je ne savais pas qu'il fallait faire comme ça je serait vigilante la prochaine fois

    J'ai finalement réussi en suivant ce post : http://www.developpez.net/forums/d10...ligne-tableau/

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <script language="javascript" type="text/javascript">
        function detailDisplaying(ipp)
        {
            try{
                    alert(ipp);
                    document.forms["buttonForm"].action="detail.do?ipp="+ipp;
                    document.forms["buttonForm"].submit();
            }catch(e){
                    alert("Erreur de type :"+e);
            }
         }
    </script>
    J'aurais une dernière question :
    Comment se fait-il que l'URL obtenue soit ../detail.do? au lieu de ../detail.do?ipp=123456789 ?? Comment peut-on donc récupérer la valeur envoyée en paramètre dans ma servlet ?

    Autre chose, cette méthode est-elle propre, ou bien dois-je privilégier ma méthode de ce post ?
    Merci.

  14. #14
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Par défaut
    La récupération des valeurs d'un formulaire dans une servlet est expliquée sur de nombreux sites.

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

Discussions similaires

  1. probleme avec javascript dans servlet
    Par Battosaiii dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 18/04/2006, 10h50
  2. [JSP] [Servlet] Exit d'une page JSP ou d'une servlet
    Par boutss dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 27/02/2006, 07h50
  3. navigation dans une jsp avec javascript
    Par petitelulu dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 15/11/2004, 18h55
  4. [JSP] [STRUTS] [Javascript] Rechargement de page
    Par babylone7 dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 28/07/2004, 13h21
  5. [jsp]controles des formulaires servlet ou javascript ?
    Par alexandra_ape dans le forum Servlets/JSP
    Réponses: 7
    Dernier message: 05/07/2004, 14h46

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