Conexão Postgresql + Tomcat + DW + Java

1 resposta
M

Olá, estou aprendendo a linguagem Java, e tentando criar um sistema com login, aparentemente todas as configurações estão corretas, os drivers jdbc são carregados com sucesso, e a conexão do mesmo é feita com sucesso, porem na hora de efetuar o login, o usuário não é reconhecido.

Postgresql 9.1, Tomcat 7.0 e Dreamweaver CS5

Código da tabela
create table login
(
log_codigo integer not null,
log_usuario character varying (10) not null,
log_senha character varying (10) not null,
log_nivelacesso character (1),
CONSTRAINT pk_login PRIMARY KEY (log_codigo)
)
Inserindo o usuário
insert into login (log_codigo, log_usuario, log_senha, log_nivelacesso) values (1,'rgerk','rafa','1');
Código Java
<%
	try
	{
		Class.forName("org.postgresql.Driver");
		//out.println("Driver carregado com sucesso!");
		
		Connection con = DriverManager.getConnection("jdbc:postgresql://localhost/curso_java","postgres","123456");
		//out.println("Banco conectado com sucesso!");
		
		Statement st = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);
		//out.println("Conexão feita com sucesso");
		
		ResultSet rs = st.executeQuery("select * from login where log_usuario = '"+ 
		request.getParameter("usuario")+"' and log_senha = '"+ 
		request.getParameter("senha")+"'");
		
		if (rs.next())
			out.println("Login Efetuado com Sucesso!");
		else
			out.println("Acesso Negado!");	
				
		
	}
	catch(ClassNotFoundException erroClass)
	{
		out.println("Classe Driver JDBC não localizado, erro = "+erroClass);
	}
	catch(SQLException erroSQL)
	{
		out.println("Erro de conexão com o banco de dados, erro = "+erroSQL);
	}
%>

Coloquei os drivers na pasta do jre7 e do tomcat, conforme imagem abaixo:
[img]http://i51.tinypic.com/2h7fc3p.png[/img]

1 Resposta

nel

Oi!

Não há a menor necessidade e não recomendo de forma alguma adicionar lib a JRE.
Esse( s ) driver( s ) de banco devem ficar somente no contexto do seu projeto, no caso, no lib do seu Tomcat. É nele que o Class.forName() irá buscar o respectivo driver.

Minha outra recomendação é você não utilizar scriplets, particularmente, não dessa forma. Busque utilizar ao máximo o conceito de MVC, que em poucas palavras, rege a divisão em camadas do teu sistema. Veja que na mesma página JSP (certo?) você tem uma consulta a banco de dados e o seu respectivo tratamento. O ideal é que você tenha um Servlet que faça esse serviço e no teu Servlet invocar a camada de persistência.

Bom, em relação ao não estar efetuando login, tudo depende. Você diz que conecta ok e etc, sendo assim, podemos deduzir que não está havendo erro, perfeito? Se houver, poste. Outro detalhe, mande imprimir os valores do parametro e tenha certeza que não contém espaços em branco e é exatamente os valores corretos.

Para finalizar, o correto seria isso:

String user = request.getParameter ("usuario"); String password = request.getParameter ("senha"); PreparedStatement ps = con.createPreparedStatement ("select * from login where log_usuario = ? and log_senha = ?"); ps.setString (1, user); ps.setString (2, password);

É mais coerente usar PreparedStatement do que Statement e setar os valores como String a usar aspas simples. Isso abstrai a sua preocupação em esquecer ou não as aspas e etc.

Tente e poste os resultados.
Abraços.

Criado 18 de setembro de 2011
Ultima resposta 19 de set. de 2011
Respostas 1
Participantes 2