# funkt. encodeURL auch wenn Cookies eingeschalten sind



## MQue (25. Aug 2009)

Hallo,

funktioniert encodeURL (also dass eine sessionid mit der URL mitgesendet wird) auch dann, wenn am Browser Cookies eingeschalten sind?

lg


----------



## MQue (26. Aug 2009)

wahrscheinlich ist die Frage unverständlich oder falsch gestellt, mir ist bis jetzt nur bekannt, dass, wenn die Cookies am Browser ausgeschalten sind, dann kann man die Sessionid mit der URL (encodeURL) mitschicken, 

ich ich wollte jetzt eben wissen ob das Mitschicken der Sessionid auch funktioniert, wenn am Browser Cookies eingeschalten sind?

Vielen Dank,
lg


----------



## JanHH (26. Aug 2009)

Soweit ich weiss ist der Sinn der Funktion, zu erkennen, ob der Browser Cookies akzeptiert oder nicht, und ggf (also wenn Cookies deaktiviert sind) die session-id in die URL einzubauen (damit die Session wiedererkannt wird). Wenn Cookies aktiviert sind, wird die session-id ja über selbige übertragen.

Wenn Du also die session-id auch dann in der URL haben willst, wenn Cookies aktiviert sind, dann musst Du Dir dafür wohl eine eigene Funktion schreiben. Aber allzu schwierig ist das ja eigentlich nicht..

Frage mich nur, welchen Sinn das haben soll.


----------



## maki (26. Aug 2009)

> ich ich wollte jetzt eben wissen ob das Mitschicken der Sessionid auch funktioniert, wenn am Browser Cookies eingeschalten sind?


Bei manchen Servern(zB. Tomcat) kann man konfigurieren, dass Cookies nicht benutzt werden.


----------



## JanHH (26. Aug 2009)

Mir fällt nur gerade auf, dass es für den Threadstarter vermutlich weniger aufwand gewesen wäre, es einfach auszuprobieren, anstatt hier die Frage zu posten.


----------



## MQue (27. Aug 2009)

Weiß jemand warum mein Code von unten nicht funktioniert, wenn ich die Cookies am Browser ausschalte?
Wenn die Cookies eingeschalten sind, dann funkionierts einwansfrei!

Ich vermute mal, das mit dem encodeURL stimmt nicht!?

lg



```
protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        final PrintWriter out = response.getWriter();
        final HttpSession session = request.getSession();

        System.out.println("request: " + session);

        if(session.getAttribute("list") != null) {
            final String s = request.getParameter("var");
            final List<String> list = (List<String>)session.getAttribute("list");
            list.add(s);
            System.out.println("Das ist die List in if: " + list);
            }
        else {
            List<String> list = new ArrayList<String>();
            final String s = request.getParameter("var");
            list.add(s);
            session.setAttribute("list", list);
            System.out.println("Das ist die List in else: " + list);
            }

        try {
            final String path = response.encodeURL("/zweiteSeite.jsp");
            final RequestDispatcher view = request.getRequestDispatcher(path);
            view.forward(request, response);
            }
        finally {
            out.close();
            }
        }
```


----------



## JanHH (27. Aug 2009)

Kannst Dir doch mal "path" nach Aufruf von encodeURL anzeigen lassen (System.out.println..), dann wirst Du ja sehen ob es ok aussieht.


----------



## MQue (27. Aug 2009)

JanHH hat gesagt.:


> Kannst Dir doch mal "path" nach Aufruf von encodeURL anzeigen lassen (System.out.println..), dann wirst Du ja sehen ob es ok aussieht.




```
String encodedUrl = response.encodeURL("/URLTest/zweiteSeite.jsp");
            System.out.println("Das ist die encodeURL: " + encodedUrl );
            final RequestDispatcher view = getServletContext().getRequestDispatcher(encodedUrl);
            view.forward(request, response);
```

Mit dem code oben bekomme ich die Anzeige im Browser:


```
HTTP Status 404 - /URLTest/URLTest/zweiteSeite.jsp;jsessionid=5B6D58CA1D2B91ED8B024497C0C15F90
```

also ein /URLTest zuviel, wenn ich:


```
String encodedUrl = response.encodeURL("zweiteSeite.jsp");  // ohne /URLTest
            System.out.println("Das ist die encodeURL: " + encodedUrl );
            final RequestDispatcher view = getServletContext().getRequestDispatcher(encodedUrl);
            view.forward(request, response);
```

schreibe, dann wird die jsessionid nicht angehängt.

keine Ahnung was ich da machen kann?

lg


----------



## JanHH (30. Aug 2009)

Du kannst sie per Hand in die URL einbauen!

Brutalo-Lösung:

- Du rufst encodeURL für die URL mit "/URLTest" auf. Dann guckst Du per String.indexOf("jsessionid"), ob die jsessionid in die URL eingebaut wurde.
- wenn ja, dann baust Du sie "per Hand" in die eigentliche URL (also die ohne URLTest) ein.

nicht ganz die feine englische Art aber funktioniert zumindest.


----------

