JSP SERVLET e SESSION

2 respostas
A

boa tarde,
estou começando a trabalhar com session e estou com dificuldades, veja :

tenho o código em minha página index.jsp …

<%

if (session.isNew()) {

out.println("nova : " + session.getId());

}

else

out.println("existente : " + session.getId());
if (session.getAttribute("status") != null) {	
       ...
    }

%>

tenho o seguinte código em minha servlet…

HttpSession sessao = request.getSession(true);

sessao.setAttribute(status”, 1);

if (sessao.isNew())

response.sendRedirect("/pfc/index.jsp?teste");

else

response.sendRedirect("/pfc/index.jsp");

problema: ao chamar index.jsp está imprimindo sessão nova com ID Y ,
ao chamar submit do index.jsp é executado a servlet com o código acima e está sendo criado a sessão Z (está entrando no if), quando é dado o sendRedirect é impresso sessão Y existente, porém está entrando no segundo if da jsp, não estou entendendo, porque imprime sessão Y e estou conseguindo acessar o atributo da sessão Z ?

o que eu quero é controlar a sessão com o mesmo id, tanto na servlet como na jsp, e ao passar para uma outra página jsp eu não perder o atributo setado. do jeito que está se eu der um sendRedirect para outra página jsp o session.getId() irá me retornar Y, porém não acesso mais os atributos que estão no ID Z, tá meio estranho isso.

desculpe a confusão, me ajudem.
obrigado,
Augusto

2 Respostas

D

Olá Augusto, é o seguinte…

Quando vc entra a primeira vez na jsp, você tem uma sessão nova, então é por isso que entra no primeiro if, dai vc faz o submit e o servlet é executado,
dai o servlet faz o seguinte, ele pega a sessão da requisição e pergunta “sessao.isNew()” : Alguém ja fez alguma requisição com esta sessão? Se não, ele trata a sessão como nova e adiciona um atributo “status” com o valor 1, beleza, agora ele redireciona a pagina para “/pfc/index.jsp?teste” e
na jsp ele vai fazer a mesma coisa com o metodo isNew(), ele pergunta: Alguém ja fez alguma requisição com esta sessão, agora sim, então ele vai pro else, mas a sessão esta lá com o atributo status e tudo mais, ela existe, só não é nova neste momento.

Ok?

Daniel Sanches

A

Danyel,
algumas dúvidas :

os atributos são amarrados a sessão (id) correto ?
sessão de servlet é diferente de sessão de jsp ?
no exemplo que eu fiz acima se eu redireciona para uma outro jsp sem ser a index.jsp, eu não consigo ter acesso ao atributo status, gostaria desse acesso, como proceder ?

obrigado pela ajuda,
Augusto

Criado 12 de setembro de 2006
Ultima resposta 13 de set. de 2006
Respostas 2
Participantes 2