[java][jsp][servlet] Pb de perte d'ID de session entre servlet et jsp

Pb de perte d'ID de session entre servlet et jsp [java][jsp][servlet] - Programmation

Marsh Posté le 13-03-2002 à 14:35:05    

Ben voila:
J'ai une servlet qui appelle une JSP avec RequestDispatcher, jusque là tout va bien.
Pb: je fais une gestion des sessions avec réécriture d'URL et ma session est perdue entre ma serlet et ma JSP.
Là je me demande si encodeRedirectURL() pourraît pas me servir mais impossible de trouver de la doc qui m'indique à quoi ça sert exactement.
 
Enfin bon, j'ai presque plus de cheuveux à force de me les arracher, alors si vous pouviez m'aider.... :cry:


---------------
"Si ça peut déconner, ça va déconner..."
Reply

Marsh Posté le 13-03-2002 à 14:35:05   

Reply

Marsh Posté le 13-03-2002 à 14:56:18    

bin c'est justement à ca que ca sert gros malin. Tu ne fais pas de gestion de session en URL rewritting tant que tu n'appelles pas cette méthode pour réécrire toutes tes URL "locales"
 
Tu as regardé la javadoc avant dire que tu ne trouves rien?

Citation :


encodeURL
public java.lang.String encodeURL(java.lang.String url)Encodes the specified URL by including the session ID in it, or, if encoding is not needed, returns the URL unchanged. The implementation of this method includes the logic to determine whether the session ID needs to be encoded in the URL. For example, if the browser supports cookies, or session tracking is turned off, URL encoding is unnecessary.  
For robust session tracking, all URLs emitted by a servlet should be run through this method. Otherwise, URL rewriting cannot be used with browsers which do not support cookies.
 
Parameters:
url - the url to be encoded.
Returns:
the encoded URL if encoding is needed; the unchanged URL otherwise.


 
quite straigthforward ...

 

[jfdsdjhfuetppo]--Message édité par DarkLord--[/jfdsdjhfuetppo]


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 13-03-2002 à 15:32:43    

Désolé, j'ai mal cherché  :jap: , mais tu ne réponds pas vraiment à ma question car je parle de encodeRedirectURL(). encodeURL() ne marche pas dans mon cas (ou je l'utilise mal, ou je sais pas...), je vois pas trop comment faire avec ca:
 
ServletContext context = getServletContext();
RequestDispatcher dispatcher = context.getRequestDispatcher(res.encodeURL("/jsp/
page.jsp" ));
System.out.println(req.getRequestedSessionId());
dispatcher.forward(req, res);
 
là, c'est ok j'ai mon ID dans ma console, et là (page.jsp):
 
<%
 System.out.println("Body.jsp---> " + request.getRequestedSessionId());
 url = response.encodeURL("http://localhost:8080/Monitor/servlet/Controler?case=1" ); %>  
 
<form method="post" action="<%=url%>" target=_parent>
 
Et j'ai null dans ma console cette fois-ci.
 
Alors je vois donc pas trop comment faire transmettre l'ID avec encodeURL et mon RequestDispatcher.


---------------
"Si ça peut déconner, ça va déconner..."
Reply

Marsh Posté le 13-03-2002 à 15:39:55    

mais tu t'en fous de transmettre ou pas transmettre ton ID. C'est complètement transparent pour toi. Si ta JSP est invoquée comme ca
 
http://site.com/jsp/majsp.jsp?jses [...] therparams ..
 
tu auras accès de manière transparente à l'objet session. Et j'ai répondu à te question, en ce sens qui si tu proposes des liens sur ta page JSP ils doivent etre encodées via encodeURL sinon tu perdras ta session si le user clique sur le lien
 
Pour etre sur que ca marche, tu peux faire ca dans ta servlet

Code :
  1. HttpSession s = request.getSession(); // pour etre sur que la session est crée
  2. // ajout d'un machin bidon
  3. s.setAttribute("toto", new String("coucou" ));
  4. URL dest = res.encodeURL("/jsp/page.jsp" )
  5. System.out.println("URL encodée : "+dest);
  6. RequestDispatcher dispatcher = context.getRequestDispatcher(dest);
  7. dispatcher.forward(req, res);


 
et dans ta jsp
 

Code :
  1. <%= session.getAttribute("toto" ) %>


 
A+

 

[jfdsdjhfuetppo]--Message édité par DarkLord--[/jfdsdjhfuetppo]


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 13-03-2002 à 15:50:21    

Ouais mais en fait je suis un Boolay moi  :D  
Crétin que je suis, j'ai pas pensé qu j'avais une page intermediaire qui, elle, ne récrit pas l'URL. Donc forcément, mon ID était perdu en cour de route. Putain je suis strop con...
 
Merci quand même  :jap:


---------------
"Si ça peut déconner, ça va déconner..."
Reply

Marsh Posté le 13-03-2002 à 15:56:31    

Deepcore a écrit a écrit :

Ouais mais en fait je suis un Boolay moi  :D  
Crétin que je suis, j'ai pas pensé qu j'avais une page intermediaire qui, elle, ne récrit pas l'URL. Donc forcément, mon ID était perdu en cour de route. Putain je suis strop con...




 
 
 :sarcastic:


---------------
Just because you feel good does not make you right
Reply

Sujets relatifs:

Leave a Replay

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