Autenticando em um sistema de Login  XML
Índice dos Fóruns » Desenvolvimento Web
Autor Mensagem
rodrigofariat
Entusiasta Java

Membro desde: 12/03/2010 20:46:52
Mensagens: 20
Offline

Pessoal,

Sou iniciante em programaçao java para web, criei uma classe login, na qual usando cookies, permite que usuarios
sejam autenticados. Quando tento fazer o login com o usuario admin (cadastrado no MySLQ) vem a mensagem:

Nao foi possivel conectar com o banco.
Parameter index out of range (1 > of parameters, which is 0)

Tentei diversas formas mas sem sucesso.

Segue abaixo o codigo.

package br.home.livraria;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.*;
import java.sql.*;

/**
* Servlet implementation class Login
*/
public class Login extends HttpServlet {
private static final long serialVersionUID = 1L;
private Connection conn;

/**
* @see HttpServlet#HttpServlet()
*/
public Login() {
super();
// TODO Auto-generated constructor stub
}

/**
* @see Servlet#init(ServletConfig)
*/
public void init(ServletConfig config) throws ServletException {
// TODO Auto-generated method stub
String connectionString = "jdbc:mysql://localhost/livraria?user=root&password=1234";

try {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection(connectionString);
}
catch (ClassNotFoundException err) {
System.out.println("Nao foi possivel carregar o Driver");
System.out.println(err.getMessage());
}

catch (SQLException err){
System.out.println("Erro ao estabelecer a conexao com o banco de dados");
System.out.println(err.getMessage());
}
}


/**
* @see Servlet#destroy()
*/
public void destroy() {
// TODO Auto-generated method stub
}

/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub

PrintWriter out = response.getWriter();
String html = "";
String login = "";

Cookie cookies[] = request.getCookies();
if (cookies != null){
for (int i = 0 ; i < cookies.length; i++){
if (cookies[i].getName().equals("login")== true){
login = cookies[i].getValue();
} //fecha segundo if

} //fecha for
} //fecha primeiro if


html += "<html>";
html += "<head>";
html += "<title>Biblioteca Online</title>";
html += "</head>";
html += "<body>";
html += "<form method='post' target='_self' action='#' >";
html += "Login:<input type='text' id='login' name='login' value='" + login + "'><br/>";
html += "Senha:<input type='password' id='password' name='password'<br/>";
html += "<input type='submit' id='btnLogin' name='btnLogin' value='Login'><br/>";
html += "</form>";
html += "</html>";
out.print(html);
}

/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub

PrintWriter out = response.getWriter();
PreparedStatement smt;
Cookie cookie;
ResultSet rs;
String sql = "select * from tb_usuario where login = '?' and password = password('?')";
String html = "";
html += "<html>";
html += "<body>";
try {
if (request.getParameter("login")!= null && request.getParameter("password")!= null) {
smt = conn.prepareStatement(sql);
smt.setString(1, request.getParameter("login"));
smt.setString(2, request.getParameter("password"));
rs = smt.executeQuery();

if (rs.next()){
cookie = new Cookie("login", request.getParameter("login"));
response.addCookie(cookie);
response.sendRedirect("sucesso.html");

/* Pratica 3
HttpSession session = request.getSession();
session.setAttribute("UserName",rs.getString("Nome"));
response.sendRedirect("CadastraLivro");*/
}
else {
html += "usuario ou senha invalidos";
}
rs.close();
smt.close();

} else{
html += "usuario ou senha nao informada !";
}

} catch (SQLException err){
html += "Nao foi possivel conectar com o banco<br><br>";
html += err.getMessage();
}
html+= "</body>";
html+= "</html>";
out.print(html);
out.close();
}
}

Att,

Faria

This message was edited 1 time. Last update was at 12/03/2010 22:14:33

ctosin
JavaChild
[Avatar]

Membro desde: 02/03/2008 17:58:57
Mensagens: 147
Localização: Curitiba-PR
Offline

Olá,

Tente remover as aspas simples da sua query. Ficaria assim:



Quando você chama o setString() do PreparedStatement ele já lida automaticamente com as aspas simples, então você não precisa se preocupar com isso.

Outra coisa que eu gostaria de falar é que você deve tomar muito cuidado com a forma como você está programando este servlet. Lembre-se de que os servlets são normalmente compartilhados entre as requisições. Desta forma, declarar o objeto da sua conexão com o banco de dados como um atributo do servlet é extremamente perigoso e não recomendado em nenhuma situação (ainda mais em se tratando de um recurso como uma conexão). Para fins de aprendizagem tudo bem (e acho que é esse seu objetivo), mas só neste caso. Só quis te dar esse toque

Abraço

Carlos Tosin
Instrutor Oficial dos cursos de Java & Android
Softblue - Qualidade em Cursos On-Line
www.softblue.com.br
[WWW]
rodrigofariat
Entusiasta Java

Membro desde: 12/03/2010 20:46:52
Mensagens: 20
Offline

Oi Ctosin,

Funcionou após retirar as aspas.
A idéia é mais para aprendizado mesmo.
Mas caso eu goste de programar em Java, vou segui a dica que voce passou.

Obrigado !

Faria
 
Índice dos Fóruns » Desenvolvimento Web
Ir para:   
Powered by JForum 2.1.8 © JForum Team