Estou escrevendo um programinha, ate ai beleza ta tudo funcionando o meu problema começou na hora de
criar o controle de acesso.
Eu criei um método de acesso que faz uma lista mas nao estou conseguindo passar os parâmetros corretamente
o meu método lista todos os campos do banco, e nao traz o especifico que preciso. segue código
[code]
//classe usuárioDAO
public List obtemUsuario() {
try {
List usuarios = new ArrayList();
PreparedStatement ps = this.conexao.prepareStatement(“select * from usuario WHERE login=?”);
ResultSet rs = ps.executeQuery();
boolean isValid = new UsuarioDAO().isValidLogin(request.getParameter("txtLogin"), request.getParameter("txtSenha"));
if (isValid) {
PrintWriter out = response.getWriter();
out.println("<html><head><body><h1> DEU CERTO</h1></body></head></html:");
System.out.println(u.getLogin());
System.out.println(u.getLogin());
} else {
PrintWriter out2 = response.getWriter();
out2.println("<html><head><body><h1>NAO DEU CERTO</h1></body></head></html:");
}
} [/code]
E eu diria para criar uma classe de serviço, algo “intermediário” para lidar com o teu DAO. E no teu servlet tu invoca a classe de serviços que irá trabalhar com a camada do DAO. Vai ficar melhor divido as tarefas dessa forma.
Não consegui entender muito bem sua dúvida mas vi que você não informou o valor do parâmetro da sua instrução SQL “login=?”.
Você precisa informar qual o valor deste parâmetro através de um dos métodos setXXX da classe PreparedStatement, por exemplo:
ps.setString(1, login);
Acredito que você também precisa receber o login do usuário como parâmetro do seu método obtemUsuario.
public List<Usuario> obtemUsuario(String login)
Não seria melhor você buscar o usuário no banco de dados com a seguinte consulta SQL “select * from usuario WHERE login=? and senha=?” e com isso receber ambos os parâmetros (login e senha) no seu método obtemUsuario?
Newton seria sim, mas isso que to fazendo é so titulo de aprendizagem nao
terá aplicação prática futura, por isso que nem to me preocupando muito com
isso!
[quote=joaoabi]Newton seria sim, mas isso que to fazendo é so titulo de aprendizagem nao
terá aplicação prática futura, por isso que nem to me preocupando muito com
isso![/quote]
João, o que quer dizer com “não terá aplicação futura” ?
Que simplesmente esse código não será aplicado a um sistema ou que você não pretende seguir a área de desenvolvimento ?
Se for a segunda opção, ok, se for a primeira…não se começa algo fazendo errado ou se sabe que pode ser melhorado, então melhore. O ideal é sempre buscar começar fazendo o melhor e correto, caso contrário, pode virar costume “deixa o código assim mesmo, funciona”. E esse tipo de pensamento afunda ou atrapalha e muito grandes projetos.