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...

Rispondi quotando



