Re:Problemas colocando e retirando valores da sessão

9 respostas
otaviofcs

tenta: alert(’<%=session.getAttribute(“aaa”) %> ') ;

Você está realmente setando e recuperando o atributo da sessão assim uma linha abaixo da outra? Você realmente necessita jogar esse atributo na sessão? Não pode jogar na request?

abraços,

Otávio

9 Respostas

Humbertim2

olá…
tente dessa maneira

<%session.putValue("aaa","codMapa");%> 
alert(<%session.getParameter("aaa") ;%> ) ;

lembrando que eh necessario iniciar a sessao no cabeçalho do codigo…
session=“true”

abraço

ramilani12

A diferença em vc colocar valores no request é pra cada pagina JSP vc terá que setar -&gt request.setAttribute("a","a"); e para outra pagina pegar-&gt request.getAttribute("a"); scope = page

Diferente de Session session.setAttribute("a","a"); o objeto esterá no request enquanto a sessão existir scope=session

//
&lt;%= request.getAttibute("a") %&gt; // isso é similar ao out.println()

&lt;%  out.println(request.getAttibute("a")); %&gt;
otaviofcs

Olá lance,

vamos por partes:

A diferença é que você coloca no request se vai encaminhar para outra página (dentro de uma mesma chamada) e coloca na sessão se é para ficar armazenada por toda (ou pelo menos até você dar um remove) a sessão do usuário. Evite sessões muito grandes pois diminui a capacidade de escalar (atender a muitos usuários simultaneamente) da aplicação.

Não quer dizer que você não possa guardar na sessão, só tem que saber se vale à pena.

Eu tinha o hábito de armazenar grandes sessões e isso era péssimo.

O que acontece é que o jsp é transformado numa página servlet. E o interpretador vai transformar <%=%> em ou out.print(); enquanto um <%%> vai simplesmente, no seu caso, chamar o método que não processa nada, só retorna uma String que não será enviada para lugar nenhum. Isso ( <%%> ) é usado para interações, como colocar um if ou um do, entre outras coisas.

abraços,

otávio

otaviofcs

Só pra completar. Se você estiver usando o tomcat e for na pasta:

[BASE_DO_TOMCAT]/work/Catalina/localhost/[SUA_APLICACAO]/org/apache/jsp/ vai ver suas jsp’s transformadas em servlet. É um bom caminho para entender as diferenças.

otaviofcs

Tente usar:

<jsp:useBean id=“nomeDoObjetoNoRequest” class=“java.lang.String” scope=“request”/>

L

Olá
Dei uma procurada rápida no fórum e no google mas não achei nada que solucione o meu problema. Todos os posts que eu achei dizem que para colocar e retirar algo da sessão, usando JSP basta usar o
session.getAttribute e session.setAttribute, request.set e get e etc.
Estou fazendo isto com o seguinte scriplet inserido dentro de uma função javascript:

<%session.setAttribute(aaa,codMapa);%>

alert(<%session.getAttribute(aaa) ;%> ) ;

Estou colocando um valor fixo chamado aaa e com o valor codMapa e tentando recuperá-lo na linha seguinte, para fins de teste. Para isto uso um alert para jogar o valor na tela.

Porém não estou conseguindo recuperar este valor, não sei porque.

Já usei tb o request.getSession().getAttribute e o request.getAttribute (com seus respectivos set’s). Alguém poderia me dar uma luz?

Obrigado,
Oscar

L

Olá,
Obrigado pela rápida resposta.
Estou sim fazendo uma linha embaixo da outra, porém só para testes. Agora pretendo colocar nos lugares corretos.
Eu preciso setar estes atributos para pegar na próxima página. não sei se poderia ser no request. Qual a diferença de colocar na sessão e no request?
O que tu me faluo pra usar funcionou, mas eu não entendi a diferença: no teu ele pega o retorno e transforma para string(por causa do <%= ), correto?
No que eu estava tentando antes, ele retornava o valor, que era uma string. Não?

Obrigado,
Oscar

L

Ah,
entendi.
Muito obrigado pela ajuda, foi muito útil.

Oscar

EDIT: estou usando weblogic e não tomcat, mas vou descobrir o diretório do weblogic que tem estes dados.

EDIT2: eu coloquei no request e etntei recuperar na próxima página, mas não funcionou. Retornou null, porém quando eu coloco na sessão ele funciona. Vou dar uma procurada para saber o porque.

L

Tente usar:

<jsp:useBean id=“nomeDoObjetoNoRequest” class=“java.lang.String” scope=“request”/>

É que eu estou usando o código dentro do javascript, então não dá para fazer isto. Resolvi o meu problema usando atributos hidden e setando os seus valores no javascript.
Obrigado

Criado 25 de abril de 2007
Ultima resposta 26 de abr. de 2007
Respostas 9
Participantes 4