Vc precisa colocar o usuário no request/session como o leocantanhede disse.
J
JoaoMarques
Então creio eu que não estou fazendo isso não .
Eu apenos monto a query e em um preparedStatement e passo os parametros para a query.
Como que eu passaria para esse request?
Muito obrigado!!
leocantanhede
Depois que você obter o resultado no método que você criou, deverá atribuir o resultado a sua váriavel.
Ex:
//Método que recupera o nome do clientepublicStringretornarNomeCliente(intcdCliente){Connectioncon=null;PreparedStatementpst=null;ResultSetrs=null;try{con=DBPool.getConnection();pst=con.prepareStatement("select nome from clientes whrere cd_cliente = ?");pst.setInt(1,cdCliente);rs=pst.executeQuery();if(rs.next()){//Aqui ele recupera o nome do clientenomeCliente=rs.getString("nome");}}catch(SQLExceptione){e.printStackTrace();}finally{DBPool.doFinallyClose(con,pst,rs);}}
No seu servlet irá fazer o seguinte:
//ExemploClientecliente=newCliente();cliente.setCodigo(Integer.parseInteger(request.getParameter("codigoCliente")));cliente.setNome(cliente.retornarNomeCliente(cliente.getCodigo()));//Atribui o objeto a um requestrequest.setAttribute("cliente",cliente);//Redireciona para a página de destinoRequestDispatcherrd=request.getRequestDispatcher("./index.jsp");rd.foward(request,response);
Eu devo colocar aonde o request?
E quando eu coloco ele pede (obvio) para importar , porém tem muitos imports qual seria o correto??
Muito obrigado !!
leocantanhede
Qual o critério de busca do usuário ?
J
JoaoMarques
Como assim o critério ?
Apenas faço um select e passo os parâmetros login e senha .
Se existir esses parâmetros ele vai retorna true apenas isto.
A minha dúvida é aonde eu coloco esse request e se posso simplesmente coloca-lo se não tem que fazer algo antes sei lá.
Muitissimo obrigado , e também …
Se existe outro jeito para isso , ou se isso é apenas o único jeito mesmo .
leocantanhede
Você não esta passando os parâmetros esta passando um objeto, com os atributos setados, no Struts não precisa do request.setAttribute, pelo que estou vendo parace que seu método de pesquisa é que esta errado, o seu select deve possuir um critério parecido com aquele que postei, seja ele pelo login ou senha, que deverá ser usado no método pesquisa, se quizer me mande o código do DAO, do jsp de entrada, da classe do Struts e do jsp de saída para eu entender melhor o que está sendo feito para assim poder te ajudar melhor, mande para [email removido]
J
JoaoMarques
Então eu acho estranho .
Porque eu tenho uma action para listar e funciona perfeitamente .
O método lista faz um select e adiciona em uma List , segue código :
public List<Veiculo> lista() {
try {
List<Veiculo> veiculos = new ArrayList<Veiculo>();
PreparedStatement stmt = this.connection.prepareStatement("select * from tabveic where estadoReserva= 'L' ");
ResultSet rs = stmt.executeQuery();
while (rs.next()){
Veiculo veiculo= new Veiculo();
veiculo.setId(rs.getLong("id"));
veiculo.setNome(rs.getString("nome"));
veiculo.setMarca(rs.getString("marca"));
veiculo.setCilindrada(rs.getString("cilindrada"));
veiculo.setCategoria(rs.getString("categoria"));
veiculo.setCor(rs.getString("cor"));
veiculo.setTarifaBasica(rs.getString("tarifaBasica"));
veiculo.setTarifaEspecial(rs.getString("tarifaEspecial"));
veiculo.setEstadoReserva(rs.getString("estadoReserva"));
veiculos.add(veiculo);
}
rs.close();
stmt.close();
return veiculos;
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
E funciona perfeitamente , eu não entendo porque não funciona no login..
J
JoaoMarques
Acho melhor resolver por aqui mesmo , que isso acaba ajudando outras pessoas que acabam se deparando na mesma situação que eu .
Obrigado !!
leocantanhede
Uma coisa é você verificar se o tem usuário no banco, para buscar somente um especifico deverá ser usado uma cláusula where na sua consulta, o método consulta procura verifica se tem usuário no banco e retorna true se achar, mas no método pesquisa esta sendo passado um *, então ele não traz somente 1 e sim todos que estiverem cadastrados.
J
JoaoMarques
Então eu uso .
Segue o código :
PreparedStatement stmt = connection.prepareStatement("select * from tabclie where login=? and senha=?");
leocantanhede
Usa somente a chave primária da tabela, que ai só vai trazer o que você quer, e coloque o método setUsuario e getUsuario abaixo da declaração da variável.
Exemplo:
Supondo que o login seja único:
PreparedStatement stmt = connection.prepareStatement("select * from tabclie where login=?");
stmt.setString(1, getUsario().getLogin());
stmt.execute();
rs = stmt.executeQuery();
J
JoaoMarques
Então .
O método em si do login funciona legal .
Porque eu tenho que compara com a base passando o login e senha .
Depois eu verifico se a query retornou algo , e se retornou eu retorno true para a action.
O problema é que ele teima em não aparecer nada na JSP …
leocantanhede
Na minha opinião você não precisa do método consulta, usa somente o pesquisa com a cláusula where, antes do execute coloque o set e o get e de quando no execute coloque:
usuario = new UsuarioDAO().pesquisa(usuario.getLogin());
Ai sim estara atribuindo um usuário com valores;
J
JoaoMarques
Alguém??
leocantanhede
Blz cara tentei te ajudar e parece que não gostou muito, deixo a vontade para que resolva seu problema.
J
JoaoMarques
âhn??
Não entendi …
Mais então .
Eu não entendo o fato de um funcionar e o outro não …
Será que é por causa da List??
Que ele retorna a list na jsp ??
leocantanhede
O seu método pesquisa retorna uma list ?
J
JoaoMarques
Não , não .
Eles apenas retornam o resultado da query apenas verifico se a query veio com algum resultado e já mando true .
Segue o código :
try {
PreparedStatement stmt = connection.prepareStatement("select * from tabclie where login=? and senha=?");
stmt.setString(1, usuario.getLogin());
stmt.setString(2, usuario.getSenha());
ResultSet rs = stmt.executeQuery();
if (rs.next()){
stmt.close();
return true;
} else {
return false;
}
Apenas retorno true ou false dependendo de a query me retorna algum resultado .
leocantanhede
Seu resultSet esta retornando um valor booelan, é por isso, deve ser alterado para que traga as informações do usuário.
Supondo que seu método retorne um usuário, faça assim: