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 :

Comment récupérer une valeur d'une servlet appelée en ajax ?


Sujet :

Servlets/JSP Java

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

    Informations forums :
    Inscription : Avril 2008
    Messages : 11
    Points : 1
    Points
    1
    Par défaut Comment récupérer une valeur d'une servlet appelée en ajax ?
    Bonjour à tous,

    Voilà je fais appel à vous car je ne comprends pas comment résoudre un problème simple. Je débute en servlet/jsp, et je dois faire un projet pour mes études. Désolé de la stupidité de ma question mais je n'ai pas trouvé sur le net.

    Par facilité, vu que c'est un tout petit projet avec une jsp et une servlet, je n'utilise pas de framework. Mais j'ai besoin d'appeler une servlet de ma JSP sans rafraîchir la page, et cette servlet devrait me renvoyer une valeur (et là je ne comprends pas comment on fait sans struts). Je pensais pour cela utiliser ajax, mais en fait, je n'arrive pas à appeler ma servlet. J'obtiens ce message :

    Etat HTTP 404 - /Javadoc/WEB-INF/classes/gestion
    La resource demandée n'est pas disponible
    ma 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
    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
     
    <SCRIPT language="JavaScript" type="text/javascript">
     
    	function valider(){
    		[...]
     
    		docXML = appelServlet("../WEB-INF/classes/gestionio?url="+document.getElementById("url").value,"");
     
    		listNode = docXML.getElementsByTagName("DONNEES");
    		listNode1=listNode[0].childNodes;
     
    		if(listNode1[i].tagName == "CODE") {
    			code = listNode1[i].text;
    		}
    		[...]
    	}
     
    	function appelServlet(strUrl,strParam)
    	{
    		var oXMLHTTP;
    		var objXML;
    		var strXML;
    		var msg="";
    		var url;
    		var listNode;
    		var listNode1;
    		try{
    			var hrefLocation, i;
     
    			url = strUrl;
    			if(strParam!='')url= strUrl+strParam;
     
    			oXMLHTTP = new ActiveXObject("Microsoft.XMLHTTP");
     
    			hrefLocation = document.location.href;
    			i = hrefLocation.lastIndexOf("/", hrefLocation.length);
    			hrefLocation = hrefLocation.substring(0, i+1);
     
    			oXMLHTTP.open("POST",hrefLocation + url, false);
    			oXMLHTTP.send(null);
     
    			if (oXMLHTTP.readyState == 4) {
    		            	if (oXMLHTTP.status == 200) {
    		                	objXML = new ActiveXObject("Microsoft.XMLDOM");
    					objXML.load(oXMLHTTP.responseXML);
    					return(objXML);
     
    		            	} else {
    		                	alert('ERREUR : statut différent de 200 : ' + oXMLHTTP.status);
    		                	alert("FLUX -->" + oXMLHTTP.responseText);  
    		            	}
    		        } 
    		        else{
    		                alert('ERREUR : différent de 4 ');
    		        }
     
    		}catch(e){
    			alert("ERREUR DE TRAITEMENT");
    			return false;
    		}
    	}
     
    </SCRIPT>
     
    Dans le body :
     
    <input type="button" id="valider" value="OK" onclick="valider();"/>
    ma servlet (qui ne renvoie rien alors qu'il faudrait, j'ai mis le return en commentaire)
    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
     
    package action;
     
    import javax.servlet.ServletConfig;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
     
     
    /**
     * Servlet implementation class for Servlet: initialisation
     *
     */
     public class Gestion extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet {
        /**
    	 * 
    	 */
    	private static final long serialVersionUID = 1L;
     
    	/* (non-Java-doc)
    	 * @see javax.servlet.http.HttpServlet#HttpServlet()
    	 */
    	public Gestion() {
    		super();
    	}   	
     
    	/* (non-Java-doc)
    	 * @see javax.servlet.http.HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
    	 */
    	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		// TODO Auto-generated method stub
    		this.doPost(request,response);
    	}  	
     
    	/* (non-Java-doc)
    	 * @see javax.servlet.http.HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
    	 */
    	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		// TODO Auto-generated method stub
    		 try {
    			[...]
    			// return toFluxString(code); 
     
    		} 
    		catch (Exception e){
    			 e.printStackTrace();
    		}
    	}
     
    	public void init(ServletConfig servletConfigP) throws ServletException {
    	//public void init() throws ServletException {
    		// TODO Auto-generated method stub
    		//super.init();
    		super.init(servletConfigP);	   
    	}   	  	    
     
     
     
    	public String toFluxString(String code) throws Exception
    	{
    		String temp=new String("<?xml version=\"1.0\" encoding=\"ISO-8859-15\"?>");
    		temp+="<DONNEES>";
    		temp+="<CODE>"+code+"</CODE>";
    		temp+="</DONNEES>";
    		return temp;
    	} 
     }
    mon web.xml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <servlet>
    		<servlet-name>gestion</servlet-name>
    		<servlet-class>action/Gestion</servlet-class>
    	</servlet>
    EDIT : je précise mon titre vu qu'une partie de ma question est résolue. Il me reste juste comment récupérer une valeur d'une servlet appelée en ajax.

  2. #2
    Membre confirmé Avatar de JoloKossovar
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    532
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 532
    Points : 576
    Points
    576
    Par défaut
    c'est un erreur 404, ce qui signifie que le chemin vers la servlet n'est pas le bon.

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

    Informations forums :
    Inscription : Avril 2008
    Messages : 11
    Points : 1
    Points
    1
    Par défaut
    oui ça je le sais déjà.... mais je ne sais pas comment y remédier... mes .class sont dans WEB-INF/classes, et je ne sais pas si le chemin d'accès que j'ai mis est correct.

  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
    Je ne connais pas Ajax mais pour faire appel à une servlet, il faut utiliser l'url que tu as défini dans le web.xml dans le mapping de cette servlet, et plus précisément dans la balise url-pattern. Et il ne faut pas mettre WEB-INF/classes.

    Tu devrais avoir défini la servlet par exemple comme ceci :
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    	<servlet>
    		<servlet-name>gestion</servlet-name>
    		<servlet-class>action.Gestion</servlet-class>
    	</servlet>
    	<servlet-mapping>
    		<servlet-name>gestion</servlet-name>
    		<url-pattern>/Gestion</url-pattern>
    	</servlet-mapping>
    Avec cet exemple, cela donnerait ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    docXML = appelServlet("/Gestion?url="+document.getElementById("url").value,"");
    Si ça ne fonctionne pas, il faut ajouter à l'url le contexte de l'appli via un request.getContextPath().
    Modératrice Java - Struts, Servlets/JSP, ...

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 11
    Points : 1
    Points
    1
    Par défaut
    maintenant j'ai le meme message avec : "Javadoc/vues//Gestion"

    mon projet a pour racine Javadoc, et mes jsp se trouvent dans webContent/vues

    sinon comment utilise t-on le request.getContextPath() ? je suis désolé, c'est du chinois pour moi

  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
    Si Javadoc est le contexte de ton appli, comme il te le génère, tu n'as pas besoin d'utiliser request.getContextPath().

    Alors, essaie plutôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    docXML = appelServlet("../Gestion?url="+document.getElementById("url").value,"");
    Modératrice Java - Struts, Servlets/JSP, ...

  7. #7
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 11
    Points : 1
    Points
    1
    Par défaut
    ça fait toujours pareil avc Javadoc/Gestion

  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 ?
    Modératrice Java - Struts, Servlets/JSP, ...

  9. #9
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 11
    Points : 1
    Points
    1
    Par défaut
    le voilà :

    Code xml : 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
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app id="WebApp_ID" 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">
    	<display-name>
    	Javaodc</display-name>
    	<welcome-file-list>
    		<welcome-file>index.html</welcome-file>
    		<welcome-file>index.htm</welcome-file>
    		<welcome-file>index.jsp</welcome-file>
    		<welcome-file>default.html</welcome-file>
    		<welcome-file>default.htm</welcome-file>
    		<welcome-file>default.jsp</welcome-file>
    	</welcome-file-list>
     
    	<servlet>
    		<servlet-name>gestion</servlet-name>
    		<servlet-class>action/Gestion</servlet-class>
    	</servlet>
    	<servlet-mapping>
    		<servlet-name>gestion</servlet-name>
    		<url-pattern>/Gestion</url-pattern>
    	</servlet-mapping>
     
    </web-app>

  10. #10
    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 servlet Gestion est bien compilée sous WEB-INF/classes/action ?
    Modératrice Java - Struts, Servlets/JSP, ...

  11. #11
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 11
    Points : 1
    Points
    1
    Par défaut
    oui, elle s'y trouve bien

  12. #12
    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
    Cela change-t'il quelque chose en remplaçant ceci :
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    	<servlet>
    		<servlet-name>gestion</servlet-name>
    		<servlet-class>action/Gestion</servlet-class>
    	</servlet>
    par ceci :
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    	<servlet>
    		<servlet-name>gestion</servlet-name>
    		<servlet-class>action.Gestion</servlet-class>
    	</servlet>
    Modératrice Java - Struts, Servlets/JSP, ...

  13. #13
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 11
    Points : 1
    Points
    1
    Par défaut
    alors je ne sais pas ce que j'ai fait mais maintenant j'ai une erreur 500, donc j'ai changé le / par le "." et ça ne change rien.

    mon erreur : NoClassDefFoundError : illegalName action/Gestion meme lorsqu'il y a le "." dans le web.xml

  14. #14
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 11
    Points : 1
    Points
    1
    Par défaut
    oh pardon, ça y est j'arrive à accéder à la servlet !!! j'avais pas compris qu'il fallait redémarrer le serveur

    par contre, dans la servlet, j'ai un autre problème, vu que la fonction doPost renvoie void et n'accepte pas autre chose, mais comme puis je récupérer une valeur ?

    ça peut marcher avec request ?

  15. #15
    Membre régulier
    Profil pro
    Inscrit en
    Février 2007
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2007
    Messages : 69
    Points : 76
    Points
    76
    Par défaut
    String monParametre = request.getParameter("monparametre");

  16. #16
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 11
    Points : 1
    Points
    1
    Par défaut
    j'ai voulu utiliser
    dans ma servlet : request.getSession().setAttribute("test","testttt");
    dans ma jsp : alert(<%=request.getSession().getAttribute("test")%>);
    mais j'obtiens null, sâchant que la page ne se rafraichit pas, il n'y a pas de solution pour récupérer ma valeur issue de la servlet ?

  17. #17
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 11
    Points : 1
    Points
    1
    Par défaut
    je ne comprends toujours pas comment récupérer une valeur de ma servlet dans ma jsp avec un appel en ajax, merci

  18. #18
    Membre à l'essai
    Inscrit en
    Avril 2008
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 22
    Points : 22
    Points
    22
    Par défaut
    Je viens tout juste de répondre à cette question dans un autre post:

    http://www.developpez.net/forums/sho...47#post3460247

    Mais pour que ça fonctionne, il faut utiliser la librairie ajax.js...
    Une bonne démo sur ce site... la seule différence est qu'ils utilisent une page php et non une servlet... Mais ça revient au même!

    http://www.dhtmlgoodies.com/index.ht..._client_lookup

  19. #19
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 11
    Points : 1
    Points
    1
    Par défaut
    Super merci !!!!

Discussions similaires

  1. Réponses: 1
    Dernier message: 13/04/2015, 11h17
  2. [WD16] Récupérer la valeur d'une colonne d'une table d'une ligne précise
    Par elghers_hocine dans le forum WinDev
    Réponses: 16
    Dernier message: 06/05/2011, 18h11
  3. Réponses: 3
    Dernier message: 13/03/2009, 15h20
  4. comment récupérer la valeur d'une liste dans un servlet
    Par marwanos dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 11/04/2007, 00h58
  5. Réponses: 4
    Dernier message: 07/08/2006, 17h01

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