[RESOLVIDO] Pegar o ID do usuario no login para trabalhar com session

Bom dia amigos,

Venho mais uma vez solicitar a ajuda dos amigos mais experientes em Java.

Estou estudando como trabalhar com sessão em Java utilizando o padrão MVC e estou com as seguintes dúvidas.

Tenho o método para validar o usuário onde a validação é feita pela comando SQL = ?SELECT * FROM usuario WHERE usu_login = ? AND usu_senha = ??;

Nesta validação eu consigo passar tanto o login quanto a senha como sessão. (Fiz isto como teste e funcionou)

Eu só não sei como passar o ID do usuário para a minha classe Controller (Servlet) e após para o View (JSP).

Me disseram para pegar o ID utilizando o getField mas não consegui fazer.

Por favor, preciso de uma luz.

Desde já agradeço ao amigos.

Seguem os códigos

Classe Bean - Pessoa


package br.com.assinatura.bean;

/**
 *
 * @author Fabiano
 */
public class Pessoa {
    
    private String nome;
    private String login;
    private String senha;
    private String telefone;
    private String ramal;
    private String cargo;
    private String email;
    private int idUsuario;

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public String getLogin() {
        return login;
    }

    public void setLogin(String login) {
        this.login = login;
    }

    public String getSenha() {
        return senha;
    }

    public void setSenha(String senha) {
        this.senha = senha;
    }

    public String getTelefone() {
        return telefone;
    }

    public void setTelefone(String telefone) {
        this.telefone = telefone;
    }

    public String getRamal() {
        return ramal;
    }

    public void setRamal(String ramal) {
        this.ramal = ramal;
    }

    public String getCargo() {
        return cargo;
    }

    public void setCargo(String cargo) {
        this.cargo = cargo;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public int getIdUsuario() {
        return idUsuario;
    }

    public void setIdUsuario(int idUsuario) {
        this.idUsuario = idUsuario;
    }

}

Classe como o método de validação - UsuarioDao


package br.com.assinatura.dao;

import br.com.assinatura.bean.Pessoa;
import br.com.assinatura.conexao.Conexao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

/**
 *
 * @author Fabiano
 */
public class UsuarioDao {
    
    
    public boolean verificaUsuario (Pessoa usuarioBean) throws SQLException
    {
    
        Connection conn = null;
        PreparedStatement stmt = null;
        ResultSet rs = null;
        
        try {
            
            conn = Conexao.getConexao();
            
            String sql_usuario = "SELECT * FROM usuario WHERE usu_login = ? AND usu_senha = ?";
            stmt = conn.prepareStatement(sql_usuario);
                               
// DÚVIDA: COMO PEGAR O ID DO USUÁRIO AQUI PARA ENVIÁ-LO AO SERVLET?

            stmt.setString(1, usuarioBean.getLogin());
            stmt.setString(2, usuarioBean.getSenha());
                        
            rs = stmt.executeQuery();
            
            if(rs.next())
            {
                return true;
            }
            else
            {
                return false;
            }
            
        } catch (Exception e) {
            
            rs.close();
            stmt.close();
            conn.close();
            
            return false;
            
        }
        
        finally
        {
            rs.close();
            stmt.close();
            conn.close();
        }
     
    }

}

Classe Servlet de controle - UsuarioController


/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package br.com.assinatura.controller;

import br.com.assinatura.bean.Pessoa;
import br.com.assinatura.dao.UsuarioDao;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.SQLException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

/**
 *
 * @author Fabiano
 */
public class UsuarioController extends HttpServlet {
   
    /** 
    * Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
    * @param request servlet request
    * @param response servlet response
    */
    
    private static final String CONTENT_TYPE = "text/html; charset=windows-1252";
    
    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
            
    {
        
        response.setContentType(CONTENT_TYPE);
        PrintWriter out = response.getWriter();
             
        Pessoa usuario = new Pessoa();
        RequestDispatcher rd;
        
        //DÚVIDA: COMO PEGAR O ID DO USUARIO PARA COLOCA-LO NA SESSÃO?

        String login = request.getParameter("login");
        String senha = request.getParameter("senha");
        

        usuario.setLogin(login);
        usuario.setSenha(senha);
        
        UsuarioDao usuDao = new UsuarioDao();
        
        try {

            if (usuDao.verificaUsuario(usuario)) {
                HttpSession sessao = request.getSession();
                
                sessao.setAttribute("USU", login);
                sessao.setAttribute("SENHA", senha);
                rd = request.getRequestDispatcher("/logado.jsp");
                rd.forward(request, response);
            } else {
                request.setAttribute("msg", "USUARIO OU SENHA INVALIDO");
                rd = request.getRequestDispatcher("/login.jsp");
                rd.forward(request, response);
            }
        } catch (SQLException ex) {
            
            out.println(ex);
        }
    }
}

Tela recebendo e imprimindo os dados passados pela sessão. (logado.jsp)



<%@page contentType="text/html" pageEncoding="UTF-8" session="true"%>

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

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
        
        LOGIN: <%= session.getAttribute("USU") %> <BR> 
        SENHA: <%= session.getAttribute("SENHA") %>
    </body>
</html>

Rapaz no seu caso, no seu método verificaUsuario em vez dele retornar um boolean, coloca ele pra retornar uma Pessoa,
dai na Servlet onde vc ta verificando se o retorno do método e válido, tu verifica se a Pessoa que o método retornou e null ou não.
Caso o exista o usuario o seu método retorna ele com todos os seus atributos setados.

Fabiano, o que o jweibe, falou está certíssimo.

Dentro do if, onde você verifica se ele trouxe algum registro, você popula o seu bean com os outros dados.

Seria algo como

if (rs.next()){ usuarioBean.setId(rs.getString("id")); // e outros setters que você precisar return usuario; }

E assim você tem acesso a todos os dados do usuário

jweibe e javablue,

Muito obrigado pela ajuda de vocês, era exatamente o que eu queria.

Obrigado.