Servlet : sur un serveur particulier, l'encodage d'url pose pb - Java - Programmation
Marsh Posté le 15-06-2004 à 14:23:44
Petit complément : ce message sort quand la session viend d'être construite. Au 2e appel par un explorateur web (actualisation de la page), l'erreur ne se produit plus.
Marsh Posté le 15-06-2004 à 14:26:26
c'est n'importe quoi ton truc là ...
pkoi tu fais un response.encodeUrl() avant de fair un dispatch ?????
tu crois faire quoi en faisant ca ?
Marsh Posté le 15-06-2004 à 14:37:39
Avec ça, je croyais inclure, si besoin est, l'id de session dans la requète (si les cookies ne sont pas acceptés par le client par exemple). Je me plante apparement. Je dois l'utiliser quand alors cet encodeURL ?
Marsh Posté le 15-06-2004 à 14:40:18
El_gringo a écrit : Avec ça, je croyais inclure, si besoin est, l'id de session dans la requète (si les cookies ne sont pas acceptés par le client par exemple). Je me plante apparement. Je dois l'utiliser quand alors cet encodeURL ? |
un dispatch c'est une redirection serveur : tu passes la requête d'une servlet à une autre. Ca repasse pas par le client => ca ne sert à rien de voiloir ajouté l'id de session. Si dans la première servlet, tu as la session, tu l'auras aussi dans la 2e, et inversement.
Marsh Posté le 15-06-2004 à 14:41:20
C'est au pralable (dans les pages HTML générée) que tu dois avoir ajouté l'id de session :
<a href="<%= reponse.encodeURL("index.html" )%>">coucou</a>
Marsh Posté le 15-06-2004 à 14:46:56
benou a écrit : un dispatch c'est une redirection serveur : tu passes la requête d'une servlet à une autre. Ca repasse pas par le client => ca ne sert à rien de voiloir ajouté l'id de session. Si dans la première servlet, tu as la session, tu l'auras aussi dans la 2e, et inversement. |
Je sais que c'est une redirection server. J'avais pas vu les choses comme ça. Merci.
D'ailleurs, au passage, je sais pas si c'est super clean : desfois lors d'une redirection serveur, j'en profite pour ajouter des paramètres (en ajoutant des ?monparam1=maval1&mmoparam2=maval2). je doute que ça soit bien propre, mais sous Tomcat ça fonctionne.
Marsh Posté le 15-06-2004 à 14:53:14
El_gringo a écrit : |
bha, je vois pas d'inconvénient à utiliser ca ... et c'est pas spécifique Tomcat : ca fait parti de la norme servlet2.3 => tous les moteurs de servlet doivent gérer ca.
Marsh Posté le 15-06-2004 à 14:54:33
Ha, ben c'est cool ça. J'en doutait, ça me parraissait "bidouille". Dans le cas contraire, je comprend pas pourquoi la classe HttpServletRequest n'a pas de méthode "setParameter"
Marsh Posté le 15-06-2004 à 14:59:19
El_gringo a écrit : Ha, ben c'est cool ça. J'en doutait, ça me parraissait "bidouille". Dans le cas contraire, je comprend pas pourquoi la classe HttpServletRequest n'a pas de méthode "setParameter" |
parce que ca représente la requête sous forme d'objet et que cette requête t'as été envoyé par l'utilisateur et n'est donc pas modifiable. le coup du dispatch avec des paramêtres en plus ne modifie pas la requête mais ca l'encapsule dans un wrapper (HttpServletRequestWrapper) qui se comportera "comme si" la requête contenait les paramètres supplémentaires.
Marsh Posté le 15-06-2004 à 12:53:18
Sur mon PC, tout roule.
Sur un serveur de prod, tomcat me rend une erreur 404 avec le message d'erreur suivant :
La ressource demandée (/interface/lds_records.jsp;jsessionid=4E1B8A526DD5EFFC9DB980F3E29EFD0E) n'est pas disponible.
Je soupçonne le bout de code suivant d'être responsable de ça (plus particulièrement le "encodeURL" :
Quelqu'un a une explication au fait que le changement de serveur pose ce pb ?