[Resolvido] Objeto "session" perdendo valores

Bom dia a todos!

Estou com um problema utilizando o objeto session.

Criei uma aplicação com 3 páginas para exemplificar o problema. A página de login na aplicação se chama “index.jsp”.

O problema:

  • quando faço o login na página “index.jsp” sou remetido automaticamente para a página “listaContatos.jsp” e
  • já na página “listaContatos.jsp” existe um link para a página “listaContatos2.jsp”. Quando clico neste link sou remetido a página “index.jsp” novamente, ao invés de ser remetido para a página “listaContatos2.jsp”.

Após depurar o software, descobri que da página “index.jsp” para a página “listaContatos.jsp” o objeto session ainda está com os valores que lhe foram atribuídos na página “index.jsp”.

Porém, quando tento passar da página “listaContatos.jsp” para a página “listaContatos2.jsp” o objeto session, ao chegar na página destino, está zerado, ou seja, sem valor algum. E por isto estou sendo remetido à página de login.

Não sei o porquê do objeto session estar chegando sem valor algum.

Se alguém puder ajudar, será de grande valia.

Desde já, muito obrigado!

Vamos ao código:

index.jsp

    <%@page contentType="text/html" pageEncoding="UTF-8"%>  
    <!DOCTYPE html>  
    <html>  
        <head>  
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">  
            <title>Login</title>  
        </head>  
        <body>  
            <form action="" method="post">  
            <fieldset title="Login">  
                <p>  
                    Login <input type="text" alt="Login" name="login" maxlength="20" value="" />  
                </p>  
                <p>  
                    Senha <input type="text" alt="Senha" name="senha" maxlength="20" value="" />  
                </p>  
                <p>  
                     <input type="submit" value="Enviar" name="btEnviar" />  
                </p>  
      
                <%  
                    if((request.getParameter("login")!=null)&&  
                       (request.getParameter("senha")!=null))  
                    {  
                       String us = request.getParameter("login") +   
                               request.getParameter("senha");  
                     
                       if(us.equals("aaa123"))  
                       {  
                           session.setAttribute("usuario", us);  
                           session.setMaxInactiveInterval(300); // 5 minutos.  
                           response.sendRedirect("listaContatos.jsp");  
                       }  
                       else {  
                           us = null;  
                           session.setAttribute("usuario",us);  
                           out.println("Digite o login e a senha");  
                       }  
                    }  
                 %>  
            </fieldset>  
            </form>  
        </body>  
    </html>  

listaContatos.jsp

    <%@page contentType="text/html" pageEncoding="ISO-8859-9"%>  
    <%  
    response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // HTTP 1.1.  
    response.setHeader("Pragma","no-cache"); // HTTP 1.0.  
    response.setDateHeader("Expires", 0); // Não salva cache no servidor proxy.      
      
    String usSessao =(String) request.getSession().getAttribute("usuario");  
    if(usSessao==null || usSessao==""){  
        response.sendRedirect("index.jsp");  
    }  
    %>  
    <!DOCTYPE HTML>  
    <html>  
        <head>  
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">  
            <title>Mostra todos os contatos</title>  
        </head>  
        <body>  
            <%  
                String usLogado = (String) session.getAttribute("usuario");  
                if (usLogado != null) {  
            %>  
                <fieldset style="text-align: right;">  
                    <p>  
                        Usuário Logado: Usuário  
                        <a href="index.jsp" id="btnSair" onclick="<%session.invalidate();%>">Sair</a>  
                    </p>  
                </fieldset>  
            <%  
                }  
            %>          
            <h1>Lista de Contatos</h1>  
            <p>Contato A</p>  
            <p>Contato B</p>  
            <p>Contato C</p>  
            <p>Contato D</p>  
            <p>Contato E</p>  
            <br />  
            <p><a href="listaContatos2.jsp">Lista de Contatos 2</a></p>  
        </body>  
    </html>  

listaContatos2.jsp

    <%@page contentType="text/html" pageEncoding="ISO-8859-9"%>  
    <%  
    response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // HTTP 1.1.  
    response.setHeader("Pragma", "no-cache"); // HTTP 1.0.  
    response.setDateHeader("Expires", 0); // Não salva cache no servidor proxy.      
      
    String usSessao =(String) request.getSession().getAttribute("usuario");  
    if(usSessao==null || usSessao==""){  
        response.sendRedirect("index.jsp");  
    }  
    %>  
    <!DOCTYPE HTML>  
    <html>  
        <head>  
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">  
            <title>Mostra outros contatos</title>  
        </head>  
        <body>  
            <%  
                String usLogado = (String) session.getAttribute("usuario");  
                if (usLogado != null) {  
            %>  
                <fieldset style="text-align: right;">  
                    <p>  
                        Usuário Logado: Usuário  
                        <a href="index.jsp" id="btnSair" onclick="<%session.invalidate();%>">Sair</a>  
                    </p>  
                </fieldset>  
            <%  
                }  
            %>          
            <h1>Lista de Contatos 2</h1>  
            <p>Contato F</p>  
            <p>Contato G</p>  
            <p>Contato H</p>  
            <p>Contato I</p>  
            <p>Contato J</p>  
            <br />  
            <p><a href="listaContatos.jsp">Lista de Contatos</a></p>  
        </body>  
    </html>  

Edwar Saliba Júnior

Boa noite Senhores!

Depois muita procura e também ajuda, consegui a resposta em outro fórum.

http://www.daniweb.com/web-development/jsp/threads/456355/session-object-is-losing-data#post1983220

O problema se encontra na linha 26 do arquivo “listaContatos.jsp”, pois, fiz uma mistura de JavaScript e JSP e, por fim, está linha está sempre sendo executada. Independentemente do clique no link.

Mais uma vez, muito obrigado a todos!

Abraços e até a próxima.