Toon posts:

[nogmaals?] Java + Cookie

Pagina: 1
Acties:

Verwijderd

Topicstarter
Nogmaals want het wil nogsteeds niet...

Maargoed, ik heb de volgende code:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
//blabla begin code

 public static String getCookieValue(Cookie[] cookies,
                          String cookieName) {
    if (cookies != null) {
    for(int i=0; i<cookies.length; i++) {
      Cookie cookie = cookies[i];
      if (cookieName.equals(cookie.getName()))
        return(cookie.getValue());
    }
    }
    return(null);
  }
    
    //funtie voor het opvragen van de naam van het cookie (overbodig?)
   // public static Cookie getCookie(Cookie[] cookies, String cookieName) {
      
    //html-page creeeren
    public void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException      {
      
      response.setContentType("text/html");
      PrintWriter out = response.getWriter();
      
      Cookie cd = new Cookie("testcookie", "http://ngdwpc3:8888/mapviewer/omserver%ngdwpc3%niks%top10%148000%408000%3500%0%0%0%0%0%0");
      cd.setMaxAge(60);
      response.addCookie(cd);
       
     Cookie[] cookies = request.getCookies();
     String dataCook = MapViewer.getCookieValue(cookies, "testcookie");
      
      //printen voor controle
      System.out.println("testValue = " + dataCook);
      System.out.println("testName = " + dataCookName);

//blabla rest van de code

Wanneer ik dit ga runnen (met de Forte ide) kan je een overzicht krijgen van alle HTTP transacties. Hierin staat dat er wel een "outgoing" cookie is, maar geen "incoming". Raar, want de code zou eerst een cookie moeten maken, en deze gelijk daarna moeten lezen.

En ik ken nou niet begrijpen waarom het cookie niet gelezen wordt.

  • JeroenTheStig
  • Registratie: Mei 2000
  • Laatst online: 06:25
Hmm, waarom is hier in al die tijd niet op gereageerd?

Maar ik heb het gevonden, misschien heb je d'r nog wat aan, of je hebt het al lang gevonden :D

Het probleem is dus dat de cookie pas wordt geschreven bij de eerstvolgende output naar je browser, in jouw code gebeurt dat niet tussen het moment van aanmaken (in de code) van je cookie, en het moment dat je een cookie wilt lezen van de client. Normaal gesproken wordt je PrintWriter weggeschreven naar je browser als hij bij de regel "out.close();" aankomt.

Gebruik daarvoor tussen de regels "PrintWriter out = response.getWriter();" en "Cookie cd = new Cookie.. etc. etc. " de volgende opdracht:

out.flush();

De buffer in je PrintWriter wordt hierdoor geleegd naar je browser, en het leuke is dat ie dan ook de cookie aanmaakt bij de client. Vraag me niet waarom, maar het werkt.

  • reskobon
  • Registratie: November 2001
  • Laatst online: 28-08 13:24
Klopt met de flush methode leeg je elke keer opnieuw je buffer ipv dat hij wacht totdat hij vol is en hem dan pas leegt. Je kan dit ook op automatisch zetten dmv een Boolean:

PrintWriter(Writer out, boolean autoFlush)

Maar was het nou nodig om dit topic op te halen :?
Al vind ik het wel leuk hoor daar niet van :)

Leeg


  • JeroenTheStig
  • Registratie: Mei 2000
  • Laatst online: 06:25
mwoaahh.. ik haalde toevallig dit topic op uit de search, omdat ik ook met cookies en servlets aan de slag ben, en met dit soort dingetjes leer je wel weer he :)

Voor de topicstarter zal het vast niet zo boeiend zijn, maar ik heb d'r weer wat van geleerd ;)

en voor anderen kan het misschien ook wel een tip zijn, toch?

  • reskobon
  • Registratie: November 2001
  • Laatst online: 28-08 13:24
BoKToR schreef op 20 oktober 2002 @ 17:59:
mwoaahh.. ik haalde toevallig dit topic op uit de search, omdat ik ook met cookies en servlets aan de slag ben, en met dit soort dingetjes leer je wel weer he :)

Voor de topicstarter zal het vast niet zo boeiend zijn, maar ik heb d'r weer wat van geleerd ;)

en voor anderen kan het misschien ook wel een tip zijn, toch?
Dat is waar maar meestal zijn ze er niet zo van gedient als je oude topics omhoog kickt :)

Leeg


  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

Ik vind het in ieder geval heel aardig dat je nog even een antwoord geeft op zijn vraag. Er zijn al genoeg onzinnige topics en een antwoord op een zinnige vraag vind ik zeker niet tot die categorie behoren :) Het is gewoon super handig dat je meteen het antwoord kan vinden bij een vraag.
Pagina: 1