| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 12/03/2010 20:59:11
|
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
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/03/2010 09:48:30
|
ctosin
JavaChild
![[Avatar]](/images/avatar/f863c1c3ef0a21f87d108f0c0fac757a.jpg)
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 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/03/2010 12:16:03
|
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
|
|
|
 |
|
|
|
|