[JSP/SERVLET] lecture des cookies

lecture des cookies [JSP/SERVLET] - Programmation

Marsh Posté le 08-04-2002 à 17:03:28    

voilou mon pb.  
 
Ma lecture des cookies fonctionne correctement avec une servlet mais pas avec une jsp. Un exemple concret :  
j'ai une cookie dont le nom est : toto et la valeur est : 15
si je le lit avec ma servlet il me retourne toto et 15
si je le lit avec ma jsp il me retourne JSESSIONID et 16norzmyws1
 
Si je desire lire le cookie par ma jsp c'est pour creer ma page de presentation dynamiquement.
 
voici ma servlet (elle fonctionne pil poil)
package core;
 
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
 
class ServletUtilities
{
  public static final String DOCTYPE =  
  "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 " +
  "Transitional//EN\">";
 
  public static String headWithTitle(String title)
  {
   return(DOCTYPE + "\n" +
   "<HTML>\n" +
   "<HEAD><TITLE>" + title + "</TITLE></HEAD>\n" );
  }
}
 
/* create a table of the cookies associated with the current page */
 
public class ShowCookies extends HttpServlet
{
    public void doGet(HttpServletRequest request, HttpServletResponse response)
 throws ServletException, IOException
    {
 response.setContentType("text/html" );
 PrintWriter out = response.getWriter();
 String title = "Active Cookies";
 out.println(ServletUtilities.headWithTitle(title) +
      "<BODY BGCOLOR=\"#FDF5E6\">\n" +
      "<H1 ALIGN=\"CENTER\">" + title + "</H1>\n" +
      "<TABLE BORDER=1 ALIGN=\"CENTER\">\n" +
      "<TR BGCOLOR=\"#FFAD00\">\n" +
      "<TH> Cookie Name\n" +
      "<TH> Cookie Value" );
 Cookie[] cookies = request.getCookies();
 Cookie cookie;
 for(int i=0; i<cookies.length; i++)
 {
     cookie = cookies[i];
     out.println("<TR>\n" +  
   " <TD>" + cookie.getName() + "\n" +
   " <TD>" + cookie.getValue());  
 }  
 out.println("</TABLE></BODY></HTML>" );
 
    }
}
 
et la page jsp  
 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
 <TITLE> Formulaire d'inscription </TITLE>
</HEAD>
 
<BODY BGCOLOR="#FDF5E6">
<H2 ALIGN="CENTER"> Transfert par méthode post du nom et prenom</H2>
 
<%-- vérification de la presence d'un cookie de nom generique AnimeCooky --%>
<%-- affichage dynamique de la page dans ce cas                          --%>
 
<%  
  boolean identification = false;
  String nom_cookie = new String("animeCooky" );
   
  Cookie[] cookies_list = request.getCookies();
  Cookie cookie_recup;
  for(int i=0; i<cookies_list.length; i++)
  {
   cookie_recup = cookies_list[i];  
%>
   nombre de cookie(s) : <%= cookies_list.length %> <BR>
   recuperation du nom des cookie(s) : <%= cookie_recup.getName() %> <BR>
   recuperation des valeurs des cookies : <%= cookie_recup.getValue() %><BR>    
<%
   if (nom_cookie.equals(cookie_recup.getName()))
   {  
     identification = true;
     break;
   }    
  }    
     
%>
 
<%-- Si le cookie existe, on appel la base de données pour affichage     --%>
<%-- de la liste de téléchargement                                       --%>
 
<%-- response.sendRedirect("/bean/inscription.jsp" ); --%>
<%-- Si le cookie n'est pas présent, on demande l'identifiant et         --%>
<%-- on verifie son existance dans la base de données.                   --%>
<%-- Autrement on propose l'enregistrement de la personne                --%>
 
Date du Jour : <%= new java.util.Date() %><BR><BR>
 
<FORM ACTION="/bean/servlet/core.present" METHOD="POST">
 Nom :
 <INPUT TYPE="TEXT" NAME="nom"><BR>
 Prénom :
 <INPUT TYPE="TEXT" NAME="prenom"><BR>
 <BR>
 <INPUT TYPE="SUBMIT"><BR><BR>
 Il faut être identifié pour avoir accés à la base de données du site.
 <BR>
 Si vous desirez vous inscrire valider le lien ci-dessous.
 <BR>
 <I><A HREF="/bean/inscription.jsp">here</A></I>
 
</FORM>
 
Ma methode est elle bonne ??


---------------
Si tu ne poses pas les bonnes questions, comment veux-tu avoir les bonnes réponses ?
Reply

Marsh Posté le 08-04-2002 à 17:03:28   

Reply

Marsh Posté le 08-04-2002 à 21:37:08    

c'est normal qu'il ne la trouve pas vu que ton cookie est associé à la servlet => ton navigateur web ne va envoyer le cookie que quand tu fais appel à la servlet. Pour que ca fonctionne, il faut que tu associe ton cookie à tout ton site, et ca je ne sais pas exactement comment on fait, ca doit être un attribut du cookie, genre path ...

Reply

Marsh Posté le 09-04-2002 à 09:21:52    

ok merci,  
 
donc si j'ai bien compris un cookie est associé à un path, et comme ma page jsp n'est pas dans le même chemin que la servlet qui creer les cookies, il ne peut pas les charger.
 
Je vais regarder les options pour voir cela.
 
:hello:


---------------
Si tu ne poses pas les bonnes questions, comment veux-tu avoir les bonnes réponses ?
Reply

Marsh Posté le 09-04-2002 à 09:26:50    

Cookie c  
 
...
 
c.setPath(tonURI);
 
A+
 
http://java.sun.com/j2ee/sdk_1.3/t [...] ng.String)
 

Citation :


The cookie is visible to all the pages in the directory you specify, and all the pages in that directory's subdirectories. A cookie's path must include the servlet that set the cookie, for example, /catalog, which makes the cookie visible to all directories on the server under /catalog.  

 

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


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

Marsh Posté le 09-04-2002 à 09:29:20    

merci dark lord, j'etais justement dans la doc java.  
 
:hello:


---------------
Si tu ne poses pas les bonnes questions, comment veux-tu avoir les bonnes réponses ?
Reply

Marsh Posté le 09-04-2002 à 09:39:34    

scaldan a écrit a écrit :

merci dark lord, j'etais justement dans la doc java.  
 
:hello:  




you're welcome :)


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

Marsh Posté le 09-04-2002 à 09:54:19    

DarkLord a écrit a écrit :

 
Cookie c  
...
c.setPath(tonURI);




ben j'avais pas de trop mauvais souvenirs ... :)

Reply

Sujets relatifs:

Leave a Replay

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