ciao,
questa catena di metodi mi restituisce l'errore "Array index out of range: 0".
Una servlet riceve da un form username e password e chiama il metodo esisteAccount per vedere se è memorizzato sul database; in questo caso effettua il login:
codice:
String username=request.getParameter("username");
String password=request.getParameter("password");
HttpSession session=request.getSession();
AccountDAO account=new AccountDAO();
Account a=new Account(username,password);
Account b=account.esisteAccount(a);
if(username.equals(b.getNome()) && password.equals(b.getPassword()))
{
session.setAttribute("aut", true);
Cookie cookie= new Cookie("nome",username);
cookie.setMaxAge(10);
response.addCookie(cookie);
response.sendRedirect("riservata.jsp");
}else
{
session.invalidate();
Cookie cookie= new Cookie("nome","");
cookie.setMaxAge(0);
response.addCookie(cookie);
response.sendRedirect("errore.html");
}
Il metodo esisteAccount sta nella classe AccountDAO, ed effettua la query:
codice:
public Account esisteAccount(Account account) {
String query = "SELECT * FROM Account WHERE nome = "+ account.getNome();
Vector<Object> v =db.executeSelect(query, "Account");
account = (Account)v.get(0);
return account;
}
Il metodo executeSelect sta nella classe DBManager:
codice:
public Vector<Object> executeSelect(String sql, String type)
{
startConnection();
Vector<Object> v = new Vector<Object>();
Statement st;
try
{
st = conn.createStatement();
ResultSet rs = st.executeQuery(sql);
while( rs.next() )
{
if ( type.equals("Account") )
{
Account u;
u = new Account();
u.setNome( rs.getString("Nome") );
u.setPassword( rs.getString("Password") );
v.add(u);
}
}
}
catch (SQLException e)
{
e.printStackTrace();
}
closeConnection();
return v;
}
So che l'errore sta nella servlet nelle righe
codice:
Account a=new Account(username,password);
Account b=account.esisteAccount(a);
ma non capisco il perchè: il risultato della query è di tipo Account e lo sto assegnando a un oggetto Account...