Session

7 respostas
D

Olá pessoal,

Estou criando e colocando alguns objetos na sessão para outra página recuperá-los, por exemplo uma String.

HttpSession httpSession = req.getSession(true);
httpSession.setAttribute(“nome”, objeto);

O problema é que vindo da segunda página, no servlet, quando recupero a sessão obtenho outro objeto.

HttpSession httpSession = request.getSession(true);
String stringOb = (String) httpSession.getAttribute(“nome”);

Alguém sabe pq não consigo pegar a mesma sessão, ou como consigo fazer isso?

7 Respostas

R

Qual a versão dos seus Servlet e JSP…???

Aqui na empresa, devido a versão ser ainda atinga, se eu usar o setAttribute ou getAttribute ele também não retorna nada…

daí eu tenho que usar:

httpSession.putValue(“nome”, objeto);
String stringOb = (String) httpSession.getValue(“nome”);

Se a sua versão for recente, ele deve apontar uns Warning dizendo que o método é deprecated, ou seja, que é antigo e existe um novo, mas ele compila…

Tente usar put/getValue para ver se funciona… ok…

D

A minha versão não é antiga, os métodos put/getValue são deprecated.

Mas o problema não é simplesmente não recuperar os valores, debugando pelo eclipse percebi que a sessão não é mantida, quando recupero a sessão com
HttpSession httpSession = request.getSession(true);
recebo outro objeto.

R

Tenta deixar o “HttpSession httpSession = request.getSession(false);”, não deixando ele criar uma nova sessão… Para ver se você consegue, recuperar a sessão anteriormente criada…

Tá dando a impressão que a sua sessão está sendo finalizada…
Verifique o tempo do timeout configurado, também…

D

Pois é, a coisa tá bem estranha mesmo. O teste “HttpSession httpSession = request.getSession(false);” eu já havia feito e nenhuma sessão é retornada.

O time out da sessão não é, ele está em 1800 seg.

Veja só este teste que fiz:

página A - recebe valores de um form
página B - exibe os valores da sessão
página C - exibe os valores da sessão

então, diagraminha do que deveria acontecer:

A —> Servlet —> B —> Servlet —> C

O resultado foi que a pág B consegue pegar os dados da sessão mas a pág C encontra a sessão vazia, ou seja, a sessão não se mantem:

A —> Servlet —> B -x-> Servlet -x-> C

???

Abraços

M

tente fazer o mesmo, com jsp, usando o objeto implicito session … se der certo, vc pode dar uma olhada no código do servlet resultante, no método _jspService()

[]'s

eltonk

“Dart”:
Olá pessoal,

Estou criando e colocando alguns objetos na sessão para outra página recuperá-los, por exemplo uma String.

HttpSession httpSession = req.getSession(true);
httpSession.setAttribute(“nome”, objeto);

O problema é que vindo da segunda página, no servlet, quando recupero a sessão obtenho outro objeto.

HttpSession httpSession = request.getSession(true);
String stringOb = (String) httpSession.getAttribute(“nome”);

Alguém sabe pq não consigo pegar a mesma sessão, ou como consigo fazer isso?

Olha soh…
Passando o valor “true” para a sessão, vc está criando uma sessão nova, idependente se vc já tiver outra sessão criada antes…
Passando o valor “false” a sessão não será criada, ae vc pode testar, se a sessão retornar null, é porque não existe…
você pode usar tb o método isNew() para testar se a sessão é nova ou não.
então, no lugar de:
HttpSession httpSession = req.getSession(true);

você troca por:
HttpSession httpSession = req.getSession(false);

:hippy:

D

Estive fora esta semana…

Valeu galera!!!

Criado 13 de abril de 2004
Ultima resposta 23 de abr. de 2004
Respostas 7
Participantes 4