[java/jsp] Création de cookies

Création de cookies [java/jsp] - Programmation

Marsh Posté le 13-02-2001 à 22:46:33    

Salut,
 
J ai un gros problème, je n'arrive pas à créer un cookie sur la machine cliente.
Pourtant j'initialise l'objet cookie pui addCookie, mais ca ne fait rien du tout
 
help

Reply

Marsh Posté le 13-02-2001 à 22:46:33   

Reply

Marsh Posté le 14-02-2001 à 00:14:14    

Sur mon site, j'ai fait ces fonctions qui marchent très bien.
 
Euh... koique sous NS, j'ai pas testé, mais je crois que ça marche quand même :D
 
function getCookieVal(offset) {
   var endstr = document.cookie.indexOf (";", offset);
   if (endstr == -1) endstr = document.cookie.length;
   return unescape (document.cookie.substring(offset, endstr));
}
 
function GetCookie(name) {
   var arg = name+"=";
   var alen = arg.length;
   var clen = document.cookie.length;
   var i = 0;
   while (i < clen) {
      var j = i + alen;
      if (document.cookie.substring(i, j) == arg) return getCookieVal(j);
      i = document.cookie.indexOf(" ", i) + 1;
      if (i == 0) break;
   }
   return null;
}
 
function PutCookie(name, value, expireDelay)
{
 // Name : Cookie name
 // Value : Cookie Value
 // expireDealy : cookie life duration in days
 
 var expireDate = new Date();
 expireDate.setDate(expireDelay+expireDate.getDate());
 document.cookie = name+"="+value+"; expires="+expireDate.toGMTString();
}
 
function TestCookie()
{
 var valueTest = parseInt(Math.random() * 99999);
 PutCookie("TestCookie",valueTest,1) // We put a cookie with a life duration of 1 day (just for test)
 CookieRead = parseInt(GetCookie("TestCookie" ));
 if (CookieRead == valueTest)
  return true;
 else
  return false;
}

Reply

Marsh Posté le 14-02-2001 à 00:36:40    

cool ton truc, mais je sais effectivement faire ca en javascript, mais moi je voudrais le faire dans mes servlets ou dans mes pages jsp
 
...

Reply

Marsh Posté le 14-02-2001 à 00:43:14    

He, magicbuzz, c'est du java qu'il demande.
 
beboutou: c'est pour un servlet ou un JSP?
Si c'est pour un servlet, tu peux faire
 
Cookie c = new Cookie("name", "value" );
response.addCookie(c);
 
dans doGet ou/et doPost (ou meme dans service si tu veux)
(ce sont des methodes de HttpServlet of course)
 
Si c'est pour un JSP, tu peux aussi essayer
 
<%
Cookie c = new Cookie("name", "value" );
response.addCookie(c);
%>
 
mais je sais pas si ca peux marcher vu que les cookies font partie du header de la response, j'ai jamais essaye
ca doit dependre de l'implementation des JSP par ton serveur

Reply

Marsh Posté le 14-02-2001 à 01:18:16    

je sais pas trop si ce que tu dis fonctionne car j avais essayé ca, mais g toujours rien dans mon repertoire cookies du client.  
bien que je puisse voir la valeur de mon cookie lorsque je fait un getCookie (sauf qu il me semble qu il depende de la session car si je kill la fenetre et que je redemande sa valeur g plus rien...)

Reply

Marsh Posté le 14-02-2001 à 20:09:01    

up

Reply

Marsh Posté le 15-02-2001 à 00:39:47    

Montre un peu ton code

Reply

Marsh Posté le 15-02-2001 à 19:24:28    

j utilise exactement le truc en jsp que tu as mis :
Cookie dd=new Cookie(name,value);
response.addCookie(dd);
 
mais rien n y fait g un cookie quiressemble diablement a une session : rine dans le rep cookies, je peux lire sa valeur tant que je kill pas ma fenetre IE

Reply

Marsh Posté le 16-02-2001 à 00:16:40    

Si tu relis mon post, j'avais dis que cela ne marcherait peut-etre pas avec des JSP.
Je m'explique:
- les cookies se trouve dans le header de la reponse http;
- les donnees contenue dans le header doivent imperativement etre ecrite dans la reponse avant de commencer la reponse en elle-meme (le content), c-a-d avant le response.getWriter()
 
On doit donc avoir qq comme :
 
response.addCookie(new Cookie("name", "value" ));
response.setContentType("text/html" );
PrintWriter out = response.getWriter();
out.println("..." );
 
Avec un JSP, tout depend de l'implementation du webserver.
 
Oups, j'ai une idee: essaie un peu de faire qq comme cela au debut de ton JSP:
 
<% response.addCookie(new Cookie("name", "value" )); %>
<% @page contentType="text/html" %>
 
(Les directives pages doivent etre au debut du fichier parce qu'elles font parties du header de la reponse.)

Reply

Marsh Posté le 18-02-2001 à 23:24:52    

mortel, ca marche. effectivement en utilisant un getWriter ca tourne.
 
merci

Reply

Sujets relatifs:

Leave a Replay

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