encodeUrl

como faço para adicionar o JSessionID nas URLS na minha aplicação ???

[quote]ex:

http://www.guj.com.br/forums/list.java;jsessionid=FABB4B379CB339D965084BA1D39720C6[/quote]

:wink:

No caso do Jetty, por default ele usa cookies e não URL rewriting, mas se o browser não suporta cookies ele troca o comportamento.

Qual Servlet Container está usando?

Obrigado pela resposta…

estou usando o Tomcat 5…

:wink:

eh URLEncoder.encodeURL() em todos os casos (Jetty, Tomcat, Bla… )

A diferenca eh que, no Jetty, ao receber um request que sofreu rewrite, o getRequestURI() vai retornar a url com o jsessionid, enquanto no Tomcat vem a url sem tal parametro.

Rafael

então somente no Jetty o JSessionID é adicionado à URL ???

:wink:

Nao, em todos os containers. Isso faz parte da especificacao. O que eu quis dizer eh que, qdo o usuario clica numa url que tem esse parametro e vc esta usando o Tomcat, o getRequestURI() vai te retornar a url SEM o jsessionid. Ou seja, se a url eh pagina.jsp?param1=valor1&param2=xxxx;jsessionid=123, o codigo

String uri = request.getRequestURI()

vai te retornar “pagina.jsp?param1=valor1&param2=xxxx”. Se voce rodar o mesmo sistema no Jetty, vc vai receber “pagina.jsp?param1=valor1&param2=xxxx;jsessionid=123,”.

Rafael

resumindo… eu só vou consiguir adicoinar o JSession (de forma que possa ser visível), se for em outro container… pois o tomcat “esconde” o ID… !?

:wink:

naaaaaaaaaaaaaaaaao… funciona em TODOS.

Rafael

aff…

Rafael, me passa em exemplo… de como adicionar o SessionID na URL…

eu devo utilizar o encodeUrl ??

:wink:

Sim, use o encodeURL().

Rafael

estou fazendo assim e não funciona:

a href="<% response.encodeURL("nomes.jsp"); %>">Nomes</a>

:wink:

Nao vai funcionar mesmo. Como eu mostrei na 4a mensagem deste topico, o metodo encodeURL() faz parte da classe URLEncoder.

Rafael

Ooops!
java.net.URLEncoder.encode("…")
javax.servlet.http.HttpServletResponse.encodeURL("…")