Login

2 respostas
J

Pessoal , tenho um problema quanto a lógica de um login.

Eu não estou conseguindo penar como trabalhar com o login e a senha no método.

estou usando o struts2 , porém minha dúvida não é quanto a ele e sim ao método no DAO.

Seguindo o código da action :

package br.com.cfr.action;

import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Result;

import br.com.cfr.jdbc.dao.UsuarioDAO;
import br.com.cfr.jdbc.modelo.Usuario;

import com.opensymphony.xwork2.ActionContext;

public class LoginAction {

	private Usuario usuario;

	@Action(value = "login", results = {
			@Result(name = "ok", location = "menu.jsp"),
			@Result(name = "invalido", location = "formulario-login.jsp") })
	public String login() {
		if (new UsuarioDAO().validaLogin(usuario)) {
			ActionContext.getContext().getSession()
					.put("usuarioLogado", usuario);
			return "ok";
		}
		return "invalido";
	}
	
	public Usuario getUsuario() {
		return usuario;
	}
	
	public void setUsuario(Usuario usuario) {
		this.usuario = usuario;
		}

}

O problema é que esse exemplo que estou seguindo ele só está passando um parametro no método validaLodin(usuario) .

E eu achava que teria que passar dois , pois vou precisar do login e da senha .

Por isso fiz meu DAO assim :

package br.com.cfr.jdbc.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;

import br.com.cfr.jdbc.ConnectionFactory;
import br.com.cfr.jdbc.modelo.Usuario;

public class UsuarioDAO {

	private Connection connection;
	
	public UsuarioDAO() throws ClassNotFoundException{
		this.connection = new ConnectionFactory().getConnection();
	}
		
		

		private void validaLogin(String login ,String senha) {
			

	  		String sql = "select * from tabuser where nome=? , senha=?";
	  		
	  		try {
	  			PreparedStatement stmt = connection.prepareStatement(sql);
	  			
	  			Usuario usuario = new Usuario();
	  			
	  			stmt.setString(1,usuario.getNome() );
	  			stmt.setString(2,usuario.getSenha() );
			
	  		}catch (SQLException e){
	  			throw new RuntimeException(e);
	  		}
		}  

	}

O problema é que não bate pois eu estou passando apenas um parâmetro no validaLogin .

Eu já tentei mudar o parâmetro do método no DAO para Usuario porém ai o action reclama e fala que o método tem que retornar um boolean .

Eu já refiz e até consegui deixa o código apto a compilar , passando como retorno um booleano , porém eu ainda não entendi muito bem , como que eu estou recebendo os dois parâmetros da tela.

E creio que o meu método não esteja validando muita coisa , ele só está tentando consultar no banco .

Deixando o método recebendo duas strings validar não seria problema só usuria o equals , porém usando o método passando o (Usuario usuario) como que seria??

2 Respostas

fernandopaiva

é simples.

veja:

public class Conexao{
    public static Connection getConnection() throws SQLException{
        try {            
            Class.forName("com.mysql.jdbc.Driver");             
            return DriverManager.getConnection("jdbc:mysql://xxx.xxx.xxx.xxx/meubd?user=root&password=root");                         
        } catch (ClassNotFoundException e) {
            JOptionPane.showMessageDialog(null, e.getMessage());            
            throw new SQLException();            
        }        
    } 
}

//bean de usuarios
public class Usuarios{
        private String login;
        private String senha;
        //get e set
}

//DAO de login
public class UsuariosDAO{
      private Connection con;
      public Usuarios() throws SQLException{
           this.con = Conexao.getConnection();
      }

      public Boolean verificaLogin(Usuarios u){
             boolean existe = false;
             PreparedStatement stm = this.con.prepareStatement("SELECT * FROM usuarios WHERE usuarios.login = ? AND usuarios.senha = ?");
             stm.setString(1, u.getLogin());
             stm.setString(2, u.getSenha());
             ResultSet rs = stm.executeQuery();
             if(rs.next()){
                  existe = true;
             }
             rs.close();
             stm.close();
             return existe;
      }
}


//testando login
public static void main(String[] args){
        Usuarios u = new Usuarios();
        u.setLogin("Fernando");
        u.setSenha("Paiva");
         
        UsuariosDAO uDAO = new UsuariosDAO();
        if(uDAO.verificaLogin(u)){
            System.out.println("Acesso liberado, usuario existe no banco de dados");
        }else{
            System.out.println("Vc nao pode logar, usuario nao existe no banco de dados");
       }
}

eh isso !

t+ e boa sorte

Master.Abs

Dá uma olhada nesse link http://www.guj.com.br/java/227418-analise-de-tela-login-resolvido e veja se te ajuda.
Flw

Criado 24 de outubro de 2011
Ultima resposta 25 de out. de 2011
Respostas 2
Participantes 3