[JSP/Servlet] Comment envoyer une string sans passer par des javabean

Comment envoyer une string sans passer par des javabean [JSP/Servlet] - Java - Programmation

Marsh Posté le 25-04-2006 à 01:35:08    

Bonjour tout le monde
 
Je souhaiterais envoyer une string d'une servlet vers une JSP. J'ai vu comment faire en passant par une javabean, mais ca serait dommage de me compliquer la vie en redefinissant une structure.
 
Ha oui et je voudrait eviter de passer par un PrintWriter
 
merci de votre aide
 

Reply

Marsh Posté le 25-04-2006 à 01:35:08   

Reply

Marsh Posté le 25-04-2006 à 01:42:18    

tu fais un request.setAttribute("id", "valeur" ) dans la servlet et un  
String id = (String) request.getAttribute("id" ) dans la jsp ...


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 25-04-2006 à 11:15:30    

Merci benou mais j ai encore un petit soucis
 
Voila ce que j'ai du cote serveur

Code :
  1. String s_etat_ajout="ca marche ou pas";
  2. session.setAttribute("reponse",s_etat_ajout);


 
Voila ce que j ai du cote client

Code :
  1. <% String name = (String) request.getAttribute("reponse" ); %>
  2. <%=name%>


 
ca compile sans erreur, mais par contre la JSP me dit que la valeur de la string est NULL

Reply

Marsh Posté le 25-04-2006 à 11:38:01    

Oui, parceque du côté du serveur, le setAttribute se fait sur la session alors que dans ton client, tu essaies de le récupérer via ton request

Reply

Marsh Posté le 25-04-2006 à 13:35:10    

Lenoiche a écrit :

Merci benou mais j ai encore un petit soucis
 
Voila ce que j'ai du cote serveur

Code :
  1. String s_etat_ajout="ca marche ou pas";
  2. session.setAttribute("reponse",s_etat_ajout);


 
Voila ce que j ai du cote client

Code :
  1. <% String name = (String) request.getAttribute("reponse" ); %>
  2. <%=name%>


 
ca compile sans erreur, mais par contre la JSP me dit que la valeur de la string est NULL


 
Ici il n'y a pas de côté "serveur" et "client". en fait la servlet et la jsp sont traitées côté serveur.
 
le problème vient du fait que pour passer de ta servlet à la jsp, dans la servlet, tu fais surement un request.sendRedirect(<url de la jsp> ).
 
Dans ce cas la jsp ne reçoit pas la même instance de HttpRequest
 
Tu peux soit faire un forward soit mettre ta chaine en session (et ne pas oublier de l'enlever dès que tu n'en as plus besoin)
 
EDIT : +1 sur ce qu'a dit brasseld

Message cité 1 fois
Message édité par Bidem le 25-04-2006 à 13:37:41
Reply

Marsh Posté le 25-04-2006 à 15:20:46    

Bidem a écrit :

Ici il n'y a pas de côté "serveur" et "client". en fait la servlet et la jsp sont traitées côté serveur.


C'est vrai ça, pourquoi j'ai dis ça moi ? Surement parceque je venais de lire ces deux termes dans le post précédent...  :pt1cable:  

Reply

Marsh Posté le 25-04-2006 à 15:49:21    

oui excusez moi , j ai fait un amlagame
pour moi servlet, traitement "metier" du cote serveur
et en fait la JSP , pour moi c etait l affichage du cote client d'ou mon erreur ... (d ailleur je me pose la question, la relation exact client serveur ici , ca sera le navigateur WEB (le client) et la JSP/Servlet (Serveur) ??)
 
bidem> je ne comprends pas ce que tu veux dire par enlever la chaine en session
 
 
voici le code que j utilise pour envoyer des informations de la servlet a la JSP
 

Code :
  1. ServletContext sc = this.getServletContext();
  2. RequestDispatcher rd = sc.getRequestDispatcher("/AjoutReponse.jsp" );
  3. rd.forward(req,resp);


 
 
et enfin pour mon probleme je l'ai resolu grace a vos indications

Code :
  1. String s_etat_ajout="ca marche ou pas";       
  2. session.setAttribute("reponse",s_etat_ajout);


 

Code :
  1. <% String name = (String) session.getAttribute("reponse" ); %>
  2. <%=name%>


 
merci a tous

Reply

Marsh Posté le 25-04-2006 à 16:29:58    

Vu que tu fais un forward tu devrais passer par la requette plutot que par la session.
 
Petit rappel sur la différence entre un forward et un sendRedirect :
 
- forward : c'est un mécanisme qui permet au serveur d'appli de transférer une requette d'une servlet (appellons la "servletMetier" ) à une autre URL (exemple : "servletAffichage" ).
C'est transparent du point de vue du navigateur (le navigateur fait une requette et reçoit une réponse). Concrètement, l'objet request reçu dans la servletAffichage sera le même que celui qu'on avait dans servletMetier.
 
 
- sendRedirect : c'est un mécanisme qui permet au serveur d'appli de dire au navigateur client de se rediriger vers une autre URL. Donc ce n'est pas transparent pour le navigateur.
Le navigateur fait une requette et reçoit une réponse spéciale (code HTTP 303 en général) qui fait qu'il envoit une 2ème requette vers l'url spécifiée dans le sendRedirect.
 
 

Reply

Marsh Posté le 25-04-2006 à 17:34:52    

merci bidem pour ces precisions, j arrive a mieux comprendre
 
tu parles de "servletAffichage" , ca correspondrai a une JSP ?
parce que j ai un doute sur la definition des termes, la servlet serais le traitement "metier" et la JSP s occuperais de l affichage.
 
l interet des 2 methodes :  
le forwad cache l adresse URL au navigateur contrairement au sendDirect ??
 
sinan j vois pas
 

Reply

Marsh Posté le 25-04-2006 à 18:09:52    

Lenoiche a écrit :

merci bidem pour ces precisions, j arrive a mieux comprendre
 
tu parles de "servletAffichage" , ca correspondrai a une JSP ?
parce que j ai un doute sur la definition des termes, la servlet serais le traitement "metier" et la JSP s occuperais de l affichage.
 
l interet des 2 methodes :  
le forwad cache l adresse URL au navigateur contrairement au sendDirect ??
 
sinan j vois pas


 
Une jsp est en fait une servlet.
Les jsp sont transformées en .java d'une classe héritant indirectement de HttpServlet.
 
Et oui, on peut dire que le forward a pour conséquence de cacher l'url de la cible au navigateur car le navigateur affiche dans la barre d'adresse l'url qu'il a utilisé pour récupérer la page en cours.
=> dans le cas du Redirect, c'est la 2ème url qui s'affiche

Reply

Marsh Posté le 25-04-2006 à 18:09:52   

Reply

Marsh Posté le 26-04-2006 à 17:39:40    

merci a tous pour votre aide
mon programme tourne maintenant :D
 
 

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed