Boa noite
Agora minha dúvida é no session
como eu faço pra zerar o valer de variaveis de sessão??
uma vez setado ovalor de uma variável de sessão, eu não consigo alterar seu valor 
Grato
Guilherme
Session.setAttribute
28 Respostas
Nao sei se entendi direito, mas…
Cria uma variavel na sessao com conteudo “Ricardo”:
session.setAttribute("nome","Ricardo");
Altera o conteudo da variavel anterior para vazio:
session.setAttribute("nome","");
Exclui a variavel da sessao:
session.removeAttribute("nome");
era isso mesmo que eu queria fazer, mas infelizmente com o session.setAttribute eu não consigo passar um valor novo pra variável, que em questão é uma String

Bom, vou tentar ajudar na solução
eu consigo setar novos valores para as variáveis de sessão, desde que eu feche meu navegador e abra um novo. Sem fazer isso, as variáveis de sessão ficam inalteradas. Eu coloco setAttribute em todas as páginas do meu site, mas as variáveis ficam com o valor da primeira página que tentou setar os valores
Grato
Guilherme
Bem, realmente não sei se é possível alterar, mas … por que não simplesmente remove e depois coloca de novo, com o valor atualizado?
Bom, vou tentar ajudar na solução
eu consigo setar novos valores para as variáveis de sessão, desde que eu feche meu navegador e abra um novo. Sem fazer isso, as variáveis de sessão ficam inalteradas. Eu coloco setAttribute em todas as páginas do meu site, mas as variáveis ficam com o valor da primeira página que tentou setar os valores
Grato
Guilherme
Vc tá fazendo algo de errado, pq é possível sim mudar o valor de um atributo na sessão.
E vc está mexendo na session em todas as suas páginas? Arrgh!!! Vai te dar um trabalhão isso…
Não é possível
o site que estou fazendo é de busca de automóveis, mas quando voce faz a primeira busca, ele seta valores para as variáveis de sessão. Na segunda busca, ele não atribui novos valores para as mesmas. Eu não consigo entender o por quê ? 
se alguém quiser dar uma olhada no site para ver se pode me dar uma ajuda, eu agradeceria muito. O site ainda está em construção, então tem várias coisas estranhas…e outra coisa… não sou profissional, estou fazendo isso para a faculdade 
http://numsabedexa.no-ip.com:8080/site_IA/index.html
Bom, acho melhor dizer mais um detalhe…
na página de confirmção, eu estou pegando os dados dos input e setando eles como variáveis de sessão. Aí na página que eu redireciono com a confirmação , eu recupero essas variáveis. Como podem ver, na primeira busca funciona, mas na segunda não, os valores se mantêm os mesmos da primeira busca, a não ser que voce abra outro navegador.
Grato
Guilherme
Posta o código pra gente ver!
Aqui vai o código da página de busca:
<%@ page contentType=“text/html; charset=iso-8859-1” language=“java” errorPage="" session=“true” %>
<html>
<head>
<title>Busca</title>
<meta http-equiv=“Content-Type” content=“text/html; charset=iso-8859-1”>
</head>
<center>
<strong><font size="+7" face=“Copperplate Gothic Bold”>Área
de busca de automóveis</font></font></strong></center>
<div align=“justify”><font size="+2">
<font face=“Tw Cen MT Condensed”>Nessa área você deve selecionar as opções de
busca. Caso não selecione nenhuma das opções, serão listados todos os carros,
como na opção “Listar Carros” do menu principal. Você não precisa selecionar
valores em todas as opções de busca, apenas nas que forem de seu interesse.</font></font>
</div>
<form action=“confirma.jsp” method=“get”>
<table width=“75%” border=“0”>
<tr>
<td><font face=“Comic Sans MS”>Marca:</font>
<select name=“marca” >
<option>null</option>
<option>Audi</option>
<option>BMW</option>
<option>Fiat</option>
<option>Ford</option>
<option>General Motors</option>
<option>Peogeot</option>
<option>Reanult</option>
<option>Volkswagen</option></select>
</td>
<td><font face=“Comic Sans MS”>Cor:</font>
</td>
</tr>
<tr>
<td><font face=“Comic Sans MS”>Número de portas:</font>
<select name=“portas” >
<option>null</option>
<option>duas</option>
<option>quatro</option>
</select>
</td>
<td><font face=“Comic Sans MS”>Ano:</font>
</td>
</tr>
<tr>
<td><font face=“Comic Sans MS”>Tipo:</font>
<select name=“tipo” >
<option>null</option>
<option>Hatch</option>
<option>Perua</option>
<option>Pick up</option>
<option>Sedan</option>
</select>
</td>
<td><font face=“Comic Sans MS”>Modelo:</font>
</td>
</tr>
</table>
</form>
</html>aqui é a página de confirmação:
<%@ page contentType=“text/html; charset=iso-8859-1” language=“java” import=“java.sql.*” errorPage="" session=“true” %>
<%! String portas, cor, marca, modelo, ano, tipo; %>
<% session.setAttribute(“portas”, request.getParameter(“portas”)); %>
<% session.setAttribute(“cor”, request.getParameter(“cor”)); %>
<% session.setAttribute(“marca”, request.getParameter(“marca”)); %>
<% session.setAttribute(“modelo”, request.getParameter(“modelo”)); %>
<% session.setAttribute(“ano”, request.getParameter(“ano”)); %>
<% session.setAttribute(“tipo”, request.getParameter(“tipo”)); %>
<html>
<head>
<title>valores</title>
<meta http-equiv=“Content-Type” content=“text/html; charset=iso-8859-1”>
</head>
<font face=“Tw Cen MT Condensed”>Agora você deve confirmar suas opções. Caso tenha
errado em alguma das informações, clique em voltar. Caso contrário, clique em prosseguir.</font> </div>
hum
aqui é o arquivo xml de dados referentes aos carros :
<%@ page contentType=“text/xml; charset=iso-8859-1” language=“java” session=“true” %>
<?xml version=“1.0” encoding=“iso-8859-1”?>
<?xml-stylesheet href=“genxslt2.jsp” type=“text/xsl”?>
<!DOCTYPE automoveis SYSTEM “automoveis2.dtd”>
e aqui é o .xslt que faz a filtragem do xml:
<%@ page contentType=“text/html; charset=iso-8859-1” language=“java” session=“true” %>
<%! String expr, marca, tipo, cor, ano, portas, modelo; %>
<%! boolean primeiro ; %>
<% primeiro = true; %>
<% expr = “null”; %>
<% marca = (String) session.getAttribute(“marca”); %>
<% tipo = (String) session.getAttribute(“tipo”); %>
<% cor = (String) session.getAttribute(“cor”); %>
<% ano = (String) session.getAttribute(“ano”); %>
<% portas = (String) session.getAttribute(“portas”); %>
<% modelo = (String) session.getAttribute(“modelo”); %>
<% if (!marca.equals( “null” ))
{
if (primeiro)
{
expr = “marca[.=’” + marca +"’ ] “;
primeiro = false;
}
else
expr += “and marca[.=’” + marca +”’ ] ";
}
if (!tipo.equals( "null" ))
{
if (primeiro)
{
expr = "tipo[.='" + tipo +"' ] ";
primeiro = false;
}
else
expr += "and tipo[.='" + tipo +"' ] ";
}
if (!cor.equals( "null" ))
{
if (primeiro)
{
expr = "cor[.='" + cor +"' ] ";
primeiro = false;
}
else
expr += "and cor[.='" + cor +"' ] ";
}
if (!ano.equals( "null" ))
{
if (primeiro)
{
expr = "ano[.='" + ano +"' ] ";
primeiro = false;
}
else
expr += "and ano[.='" + ano +"' ] ";
}
if (!portas.equals( "null" ))
{
if (primeiro)
{
expr = "portas[.='" + portas +"' ] ";
primeiro = false;
}
else
expr += "and portas[.='" + portas +"' ] ";
}
if (!modelo.equals( "null" ))
{
if (primeiro)
{
expr = "portas[.='" + modelo +"' ] ";
primeiro = false;
}
else
expr += "and modelo[.='" + modelo +"' ] ";
}
%>
<?xml version=“1.0” encoding=“iso-8859-1”?>
<xsl:stylesheet xmlns:xsl=“http://www.w3.org/1999/XSL/Transform” version=“1.0”>
<xsl:template match="/">
<HTML>
<CENTER>
<H1><font face=“Copperplate Gothic Bold”>Catálogo
de carros</font></H1>
<TABLE border=“2” bgcolor="#E6E6E6">
<xsl:for-each select="automoveis/carro">
<xsl:if test="<%= expr %>">
<TR>
<TH><font face="Comic Sans MS">MARCA</font></TH>
<TH><font face="Comic Sans MS">MODELO</font></TH>
<TH><font face="Comic Sans MS">TIPO</font></TH>
<TH><font face="Comic Sans MS">COR</font></TH>
<TH><font face="Comic Sans MS">PORTAS</font></TH>
<TH><font face="Comic Sans MS">ANO</font></TH>
<TH><font face="Comic Sans MS">ADICIONAIS</font></TH>
</TR>
<TR FONTCOLOR="#000000">
<TD ><font face="Tw Cen MT Condensed" size="+1"><xsl:value-of select="marca"/></font></TD>
<TD><font face="Tw Cen MT Condensed" size="+1"><xsl:value-of select="modelo"/></font></TD>
<TD><font face="Tw Cen MT Condensed" size="+1"><xsl:value-of select="tipo"/></font></TD>
<TD><font face="Tw Cen MT Condensed" size="+1"><xsl:value-of select="cor"/></font></TD>
<TD><font face="Tw Cen MT Condensed" size="+1"><xsl:value-of select="portas"/></font></TD>
<TD><font face="Tw Cen MT Condensed" size="+1"><xsl:value-of select="ano"/></font></TD>
<TD><font face="Tw Cen MT Condensed" size="+1"><xsl:value-of select="adicionais"/></font></TD>
</TR>
<TR><TD colspan="7"><center><xsl:element name="IMG">
<xsl:attribute name="SRC">
<xsl:value-of select="modelo/@foto"/>
</xsl:attribute>
</xsl:element></center></TD></TR>
</xsl:if> </xsl:for-each>
</TABLE>
</CENTER>
</HTML>
</xsl:template>
</xsl:stylesheet>
Desculpe ter lotado tanto o forum, mas é que eu realmente não estou entendendo o por quê do erro 
e outra coisa… o link do site ainda não funciona…devo estar com algum problema no servidor 
Abraços
Guilherme
Seu programa deve estar mto louco. Aqui isso funcionou:
<%@ page contentType="text/html; charset=iso-8859-1" language="java" errorPage="" session="true" %>
<html>
<head>
<title>Busca</title>
</head>
<body>
<center>
<strong><font size="+7" face="Copperplate Gothic Bold">Área
de busca de automóveis</font></font></strong></center>
<div align="justify"><font size="+2">
<font face="Tw Cen MT Condensed">Nessa área você deve selecionar as opções de
busca. Caso não selecione nenhuma das opções, serão listados todos os carros,
como na opção "Listar Carros" do menu principal. Você não precisa selecionar
valores em todas as opções de busca, apenas nas que forem de seu interesse.</font></font>
</div>
<form action="confirma.jsp" method="post">
<table width="75%" border="0">
<tr>
<td><font face="Comic Sans MS">Marca:</font>
<select name="marca" >
<option></option>
<option>Audi</option>
<option>BMW</option>
<option>Fiat</option>
<option>Ford</option>
<option>General Motors</option>
<option>Peogeot</option>
<option>Reanult</option>
<option>Volkswagen</option></select>
</td>
<td><font face="Comic Sans MS">Cor:</font>
</td>
</tr>
<tr>
<td><font face="Comic Sans MS">Número de portas:</font>
<select name="portas" >
<option></option>
<option>duas</option>
<option>quatro</option>
</select>
</td>
<td><font face="Comic Sans MS">Ano:</font>
</td>
</tr>
<tr>
<td><font face="Comic Sans MS">Tipo:</font>
<select name="tipo" >
<option></option>
<option>Hatch</option>
<option>Perua</option>
<option>Pick up</option>
<option>Sedan</option>
</select>
</td>
<td><font face="Comic Sans MS">Modelo:</font>
</td>
</tr>
</table>
<input type="submit" name="ok" value="ok">
</form>
<br><Br><br>
<%= session.getAttribute("portas") %>
<%= session.getAttribute("cor") %>
<%= session.getAttribute("marca") %>
<%= session.getAttribute("modelo") %>
<%= session.getAttribute("ano") %>
<%= session.getAttribute("tipo") %>
</form>
</body>
</html>
<%@ page contentType="text/html; charset=iso-8859-1" language="java" import="java.sql.*" errorPage="" session="true" %>
<%! String portas, cor, marca, modelo, ano, tipo; %>
<% session.setAttribute("portas", request.getParameter("portas")); %>
<% session.setAttribute("cor", request.getParameter("cor")); %>
<% session.setAttribute("marca", request.getParameter("marca")); %>
<% session.setAttribute("modelo", request.getParameter("modelo")); %>
<% session.setAttribute("ano", request.getParameter("ano")); %>
<% session.setAttribute("tipo", request.getParameter("tipo")); %>
<html>
<head>
<title>valores</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<%= session.getAttribute("portas") %>
<%= session.getAttribute("cor") %>
<%= session.getAttribute("marca") %>
<%= session.getAttribute("modelo") %>
<%= session.getAttribute("ano") %>
<%= session.getAttribute("tipo") %>
</body>
</html>
Eu fiz as alterações que você pediu e realmente, ele imprime na tela os novos valores da busca, quando eu faço a segunda busca…
O problema é que quando o .xlst vai fazer a filtragem para jogar na tela os resultados, ele utiliza as variáveis de sessão antigas 
CUIDADOOO…
vc está fazendo algo que pode ser totalmente errado:
marca.equals( “null” )
Não é assim q vc testa se um objeto (ou String) é null.
o certo é:
if( marca == null ) {}
Testa isso abaixo:
String marca = null;
if( marca == null ) ) {
System.out.println(" marca = null");
}
else if( marca.equals( "null" ) ) {
System.out.println(" marca equals 'null'");
}
Se eu faço essas alterações no if, ele entra em todos eles e monta uma expressão com todos os valores que eu não escolhi iguais a “null”
quando na verdade ele deveria ignorar as variáveis com valor “null”

Então quer dizer que vc programou errado.
Dá uma reorganizada nisso ai. Quem sabe vc não corrige o primeiro problema, que pode ser efeito colateral deste aí.
eu acabei de fazer testes com as variáveis e, se eu faço comparação com == dá errado, tem q ser com .equals mesmo 
Geralmente, com dados vindos via FORM, a gente faz assim:
String nome = request.getParameter("nome");
if( nome != null && nome.trim().length() > 0 ) {
// veio algum dado não vazio
}
E tem que ver que é totalmente inadequado você enviar a String “null” para indicar que nenhum dado foi informado. Seria muito melhor enviar um vazio ("").
Nossa…eu to ficando louco…
Agora eu fiz isso,., passei Strings vazias nos input e mudei o if para a forma com que você pediu…
aih ele não entra em nenhuma das opções do if e o pior de tudo…
eu to imprimindo as variáveis de sessão na tela que seria para imprimir a lista de carros, e ela não se altera depois da primeira busca 
Bom, eu corrigi um erro meu, pra variar um pouco…hehe
e agora ele faz as buscas com o if da forma que voce pediu, mas as variáveis de sessão continuam sem ser atualizadas a partir da segunda busca 
Zipa os fontes, ou melhor, manda o WAR pra mim.
Desculpa minha ignorância , mas o que é WAR???
outra coisa…descobri que se eu apertar o “refresh” no navegador, ele atualiza os valores das variáveis de sessão, e aí ele faz a nova busca.
Agora preciso saber como fazer para não precisar atualizar o navegador para fazer novas buscas
WAR = ZIP com a estrutura da aplicação web.
Use forms com method=“POST” ao invés de GET, para evitar cache da página.
bom, eu mudei pra post, mas nada se alterou na página…
Eu to dando uma organizada nos arquivos aki pra te mandar, mas não sei se consigo mandar war. Qualquer coisa pode ser .zip mesmo né?
To esperando!
Acabei de mandar os fontes para você
Grato
Guilherme