Hai ragione non c'è nessun riferimento al ruolo nel form.
Comunque l'ho modificato e adesso mi riconosce la combinazione Username-Password-Ruolo, indirizzandomi alla pagina corretta, perchè ho modificato anche il metodo getOperatore così:
codice:
	public Operatore getOperatore(String username, String password)
	{
		Operatore res = new Operatore();
		String query = "SELECT * FROM operatore WHERE username = '"+username+"'AND password = '"+password+"'"; 
		Vector<Object> v =db.executeSelect(query, "Operatore");
		res = (Operatore)v.get(0);
		return res;
	}
in pratica mi riempie il vettore nel momento in cui trova la giusta corrispondenza tra Username e password.

Ho modificato anche la servlet:
codice:
	public void performTask (HttpServletRequest request, HttpServletResponse response)
    {
		
		OperatoreDAO d = new OperatoreDAO();
		Operatore o = d.getOperatore(request.getParameter("username"), request.getParameter("password"));
Così però non va ancora bene e ti spiego subito il perchè.
Se mi loggo come amministratore, inserendo le credenziali di un impiegato, mi indirizza alla pagina errore.jsp. E fin qui ci siamo.
Se mi loggo come amministratore(o impiegato), inserendo le credenziali di un amministratore (o impiegato), mi indirizza alla pagina adminhome.jsp (o emphome.jsp), e fin qui ci siamo pure.
Se però inserisco delle credenziali errate (indipendente dal ruolo), mi da ancora errore perchè non trova la corrispondenza tra username e password, per come ho impostato il metodo getOperatore. Anche qui in pratica il metodo mi da un vettore vuoto, come prima, e mi viene sollevata la stessa eccezione.

Mi rendo conto che mi sto perdendo in un bicchiere d'acqua ..ma il problema sta lì, nel metodo getOperatore.