Session - Como saber qual usuário está logado?

8 respostas
P

Boa noite pessoas.
Estou com um problema. Estou querendo pegar valores da variável codUsuario, mas ele sempre retorna null. Preciso saber qual é o codUsuario logado no sistemas. Como faço para fazer isto?

public class Login {
     
    @SuppressWarnings("static-access")
    public static String execute(HttpServletRequest request) {        
        
        String erro="";        
        String jsp="";        
        String nome = request.getParameter("nome");
        String senha = request.getParameter("senha");
        
        Usuario usr = new Usuario();
        UsuarioDAO usrDAO = new UsuarioDAO();        
        try {
            usr = usrDAO.getUserLogin(nome, senha);
            if(usr == null){
                erro="Usuário não encontrado!";
                request.setAttribute("erro", erro);
                jsp = "/erro.jsp";
            }               
            else{
                request.getSession().setAttribute("codUsuario", usr.getCodUsuario());                
                jsp = "/menu.jsp";
            }
            
        } catch (Exception e) {
            e.printStackTrace();
            jsp = "";
        }
        return jsp;        
     }
    
    public static void validarSessao(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
        Integer codUsuario = (Integer) request.getSession().getAttribute("codUsuario");
        String jsp="";
        if(codUsuario == null ){
            jsp = "/index.jsp";
             //Redirecionando pagina
            RequestDispatcher rd = request.getRequestDispatcher(jsp);
            rd.forward(request, response);
        }        
    }
}

menu.jsp

<%@page contentType="text/html" pageEncoding="windows-1252"%>
<%@page import="controller.vo.Usuario,controller.Login"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">


<%!
String codUsuario=""; 
%>
<%
 Login.validarSessao(request, response);
%>

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
        <title>blank page</title>
    </head>
    <body>
        <h2>Menu</h2>
         <a href="/projeto/servletweb?acao=AlterarUsuario&CodUsuario=<%=codUsuario%>">Alterar Conta</a>
    </body>
</html>

8 Respostas

I

Se o seu problema ocorre no passo em que é chamado o método validarSessao é necessário você postar quem chama este método para ser ajudado

P

Então cara…
Estou conseguindo validar a sessão, só que o problema é que eu quero saber qual é o usuario que está logado. Onde eu implemento uma String que retornará um valor do códiogo de usuário da sessão?

Por exemplo: O Fulano da Silva que tem o codUsuario de número 431 está logado.
Ai eu quero pegar esse valor 431 e atribo ele no link: /projeto/servletweb?acao=AlterarUsuario&CodUsuario= recebendo como parametro 431 ficando /projeto/servletweb?acao=AlterarUsuario&CodUsuario=431. Ai nesta página de alteração do cadastro, carregará todas as informações do usuário(já consegui implementar isto). O que eu preciso é só retornar o código do usuário logado.
Vlw :slight_smile:

I

Não entendi muito bem, mas, eu acho que você tem que pegar o objeto HttpSession e salvar o codUsuario nele… porque se você estiver usando o Request não vai funcionar, devido ao tempo de vida de um request…

P

Eu não entendi nada do que vc disse hehe
me desculpa mas eu não entendo muito sobre servlets. Eu só preciso saber se precisa criar um novo metodo pra pegar o valor de getCodUsuario.
Preciso que seja enviado todas as classes envolvidas para que seja melhor comprendido o que eu quero?

H

Cara realmente tá dificil de entender o que vc realmente quer porque vc não detalhou a tua duvida

Digamos que vc tenha 20 usuarios logados no mesmo sistema. Entao vc abre uma funcionalidade que mostre os 20 usuarios logados, é isso

ou

Vc loga no sistema e precisa ver o nome do teu usuario corrente na tela

especifique sua duvida, porque assim fica dificil entender

att.

P

Eu preciso que exiba o nome do usuário na tela :slight_smile:
desculpe hehe

P

Um detalhe sobre o que eu quero…
Depois que o usuário logar, tem que imprimir no jsp o nome dele e a opção para alterar os dados. Esse é o objetivo, mas não sei da onde eu pego essa String.

R

Até onde pude notar você fez certo ao inserir o codigo na sessão.
Então para recuperar tenta substituir &lt;%=codUsuario%&gt; por ${codUsuario}

Criado 24 de abril de 2011
Ultima resposta 24 de abr. de 2011
Respostas 8
Participantes 4