Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2012
    Messaggi
    9

    Servlet per effettuare il login

    Ciao a tutti, sono uno studente di ingegneria e per l'esame di Basi di dati 2, devo realizzare un Dynamic Web Project. Ho già creato un database di supporto utilizzando il dbms Oracle 10g. Adesso devo realizzare la parte applicativa, quindi il portale vero e proprio.
    I ferri del mestiere sono Eclipse Indigo for JavaEE Developer e Apache Tomcat 7.0.
    Purtroppo, avendo poca esperienza, ho avuto da subito problemi con il login utente.
    Di seguito posterò il codice dei file che ho sin qui realizzato, con la premessa che per crearli mi sono basato su degli esempi forniti dal docente. Innanzitutto posto il codice della pagina jsp, all'interno della quale si trova il form nel quale inserire username e password. In particolare qui ho postato soltanto il body, dove è contenuto il form che richiama la servlet Login.
    codice:
    <body>
    <center><font size="5">Benvenuto in MyTicket</font></center>
    	
    
    </p>
    	
    
    Inserisci username e password per effettuare il login.</p>
    <form action="Login" method="post"> 
      <table cellspacing="5">
        <tr>
          <td>Username:</td>
          <td><input type="text" name="username" size="25"/></td>
        </tr>
        <tr>
          <td>Password:</td>
          <td><input type="password" name="password" size="25"/></td>
        </tr>
        <tr>
          <td> <input type="submit" name="submit" value="Login"/></td>
        </tr>
      </table>
    </form>
    </body>
    Di seguito è riportata la classe Operatore, nome con il quale identifico la persona che fisicamente accede al sistema. Nel database ho memorizzato una tabella Operatore con i seguenti attributi: ID, Nome, Cognome, Username, Password, Ruolo. Ruolo serve a distinguere i normali Operatori, per così dire "dipendenti", dagli amministratori. Su Ruolo c'è un vincolo Check, cioè l'attributo (di tipo VARCHAR2) può assumere solo due valori: 'Impiegato', 'Amministratore', quindi il login mi indirizzerà in due pagine diverse a seconda del ruolo, oppure in una pagina di errore.
    Detto questo posto la classe Operatore.java:
    codice:
    package myBeans;
    
    public class Operatore {
    	private int id;
    	private String nome;
    	private String cognome;
    	private String username;
    	private String password;
    	private String ruolo;
    
    public Operatore() {
    	id = 0;
        nome = "";
        cognome = "";
        username = "";
        password = "";
        ruolo = "";
        
    }
    public int getId() {
    	return id;
    }
    public void setId(int id) {
    	this.id = id;
    }
    public String getNome() {
    	return nome;
    }
    public void setNome(String nome) {
    	this.nome = nome;
    }
    public String getCognome() {
    	return cognome;
    }
    public void setCognome(String cognome) {
    	this.cognome = cognome;
    }
    public String getUsername() {
    	return username;
    }
    public void setUsername(String username) {
    	this.username = username;
    }
    public String getPassword() {
    	return password;
    }
    public void setPassword(String password) {
    	this.password = password;
    }
    public String getRuolo() {
    	return ruolo;
    }
    public void setRuolo(String ruolo) {
    	this.ruolo = ruolo;
    }
    
    /**
     * Override del metodo equals della classe Object.
     * @return - restituisce un boolean che e' true quando due utenti hanno la stessa
     * chiave; in tutti gli altri casi restituisce false.
     */
    public boolean equals(Object anObject)
    {
    	if ( anObject == null ) 
    		return false;
        if (! (anObject instanceof Operatore) ) 
        	return false;
    
        Operatore o = (Operatore) anObject;
        if (id != o.id) 
        	return false;
        
        return true;
    }
    
    /**
     * Override del metodo toString della classe Object.
     */
    public String toString(){
        String toString = null;
        toString = "L'id dell'operatore e' " + id + ",";
        toString += " il suo nome e' " + nome + ",";
        toString += " il suo cognome e' " + cognome + ".";
        toString += " il suo username e' " + username + ",";
        toString += " la sua password e' " + password + ",";
        toString += " il suo ruolo e' " + ruolo;
        return toString;
    }
    
    
    }
    Per l'interazione con il database, il prof ci ha consigliato di creare una classe DBManager di supporto, per incapsulare il codice per l'interfacciamento tra portale e web.
    Questo è il codice:
    codice:
    package myUtil;
    
    import java.util.*;
    import java.sql.*;
    import myBeans.*;
    
    public class DBManager {
    	String DbDriver;
    	String DbURL;
    	String username;
    	String password;	
    	Connection conn;
    	
    	/**
    	 * Metododo che restituisce true se la connessione e' aperta.
    	 */
    	public boolean isOpen()
    	{
    		if (this.conn == null)
    			return false;
    		else
    			return true;
    	}
    
    	/**
    	 * Costruttore della classe. Riceve l'url del driver jdbc, la username e la password
    	 * necessari per la connessione al database.
    	 */
    	public DBManager()
    	{
    		this.DbDriver = "sun.jdbc.odbc.JdbcOdbcDriver";
    		this.DbURL = "jdbc:odbc:oracleODBC"; 
    		this.username = "myproject";
    		this.password = "nino";	
    	}
    	
    	public DBManager(String url, String usn, String psw)
    	{
    		this.DbDriver = "oracle.jdbc.driver.OracleDriver";
    		this.DbURL = url;
    		this.username = usn;
    		this.password = psw;	
    	}
    	
    	private boolean startConnection()
    	{
    		if ( isOpen() )
    			return true;
    		try 
    		{
    			Class.forName(DbDriver);// Carica il Driver del DBMS
    			conn = DriverManager.getConnection(DbURL, username, password);// Apertura connessione
    		}
    		catch (Exception e) 
    		{
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    			return false;
    		}
    		return true;
    	}
    	
    	private boolean closeConnection()
    	{
    		if ( !isOpen() )
    			return true;
    		try 
    		{
    			conn.close();
    			conn = null;
    		} 
    		catch (SQLException e) 
    		{
    			e.printStackTrace();
    			return false;
    		}
    		return true;
    	}
    	
    	/**
    	 * Metodo che esegue una query di update o delete. Riceve la stringa sql e
    	 * restituisce true se la query viene eseguita correttamente, false altrimenti.
    	 */
    	public boolean executeUpdate(String sql)
    	{
    		startConnection();
    		Statement st;
    		try 
    		{
    			st = conn.createStatement();
    			st.executeUpdate(sql);
    		}
    		catch (SQLException e) 
    		{
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    			return false;
    		}
    		closeConnection();
    		return true;
    	}
    	
    	/**
    	 * Metodo che esegue una query di select. Riceve la stringa sql e la stringa che
    	 * indica la tipologia di classe su cui si vuol restituire il vettore dei risultati.
    	 * Restituisce il vettore dei risultati.
    	 */
    	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("Operatore") )
    				{
    					Operatore o;
    					o = new Operatore();
    					o.setId( rs.getInt("ID") );
    					o.setNome( rs.getString("NOME") );
    					o.setCognome( rs.getString("COGNOME") );
    					o.setUsername( rs.getString("USERNAME") );
    					o.setPassword( rs.getString("PASSWORD") );
    					o.setRuolo( rs.getString("RUOLO") );
    					v.add(o);
    				}
    			}
    		} 
    		catch (SQLException e) 
    		{
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    		
    		closeConnection();
    		return v;
    	}
    }
    La classe che segue serve per manipolare gli operatori del database:
    codice:
    package myBeans;
    
    import java.util.Vector;
    import myUtil.DBManager;
    
    public class OperatoreDAO {
    
    	DBManager db;
    	
    	public DBManager getDb() {
    		return db;
    	}
    
    	public void setDb(DBManager db) {
    		this.db = db;
    	}
    	public Operatore getOperatore(String username)
    	{
    		Operatore res = new Operatore();
    		String query = "SELECT * FROM operatore WHERE username = "+username;
    		Vector<Object> v =db.executeSelect(query, "Operatore");
    		res = (Operatore)v.get(0);
    		return res;
    	}
    	
    	public Vector<Operatore> getOperatori()
    	{
    		Vector<Operatore> res = new Vector<Operatore>();
    		String query = "SELECT * FROM operatore";
    		Vector<Object> supp = db.executeSelect(query, "Operatore");
    		for(int i=0;i<supp.size();i++)
    			res.add((Operatore)supp.get(i));
    		
    		return res;
    	}
    	public boolean salvaOperatore(Operatore o)
    	{
    		boolean esito;
    		
    		String query = "INSERT INTO Operatore VALUES ( '?', '?', '?', '?', '?', '?')";
    		query=query.replaceFirst("[?]", ((Integer)o.getId()).toString());
    		query=query.replaceFirst("[?]",o.getNome());
    		query=query.replaceFirst("[?]",o.getCognome());
    		query=query.replaceFirst("[?]",o.getUsername());
    		query=query.replaceFirst("[?]",o.getPassword());
    		query=query.replaceFirst("[?]",o.getRuolo());
    		esito = db.executeUpdate(query);
    		return esito;
    	}
    	
    	public boolean eliminaOperatore(Operatore o)
    	{
    		boolean esito;
    		String query = "DELETE FROM Operatore WHERE id = " +o.getId();
    		esito = db.executeUpdate(query);
    		return esito;
    	}
    	
    	/*
    	 * eventualmente inserire altri metodi per la manipolazione degli operatori nel DB
    	 */
    }
    E infine, ecco la famigerata servlet che deve realizzare il login.
    codice:
    package myServlets;
    
    import java.io.IOException;
    
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import myBeans.*;
    
    
    /**
     * Servlet implementation class Login
     */
    @WebServlet("/Login")
    public class Login extends HttpServlet {
    	private static final long serialVersionUID = 1L;
           
        /**
         * @see HttpServlet#HttpServlet()
         */
        public Login() {
            super();
           
        }
    
    	/**
    	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
    	 */
    	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		
    		performTask(request, response);
    	}
    
    	/**
    	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
    	 */
    	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		
    		performTask(request, response);
    		
    	}
    	
    	
    	
    	public void performTask (HttpServletRequest request, HttpServletResponse response)
        {
    		
    		OperatoreDAO d = new OperatoreDAO();
    		Operatore o = d.getOperatore(request.getParameter("username"));
    		
    		
    		
    		try
    		{
    			
    			String categoria = request.getParameter("ruolo");
    			String jspPage = "";
    			
    			if (o.getRuolo().equals(request.getParameter("ruolo"))){
    				
    	        	if ( categoria.equals("Amministratore") )
    	        	{
    	        		jspPage = "jsp/adminhome.jsp";
    	        	}
    	        	else if ( categoria.equals("Impiegato") )
    	        	{
    	        		jspPage = "jsp/emphome.jsp";
    	        	}
    	        	
    			}
    	        	else {
    	        		jspPage = "jsp/errore.jsp";
    	        }
    	       request.getRequestDispatcher( jspPage ).forward(request,response);
    		}
    		catch(Throwable theException)
    		{
    			//theException.printStackTrace();
    		}
        }
    
    }
    Per completezza vi posto anche il file web.xml.
    codice:
    <?xml version="1.0" encoding="UTF-8"?>
    	<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN" "http://java.sun.com/j2ee/dtds/web-app_2_2.dtd">
    	<web-app>
    		<servlet>
    			<servlet-name>Login</servlet-name>
    			<servlet-class>myServlets.Login</servlet-class>
    		</servlet>
    		<servlet-mapping>
    			<servlet-name>Login</servlet-name>
    			<url-pattern>/Login</url-pattern>
    		</servlet-mapping>
    	</web-app>
    Ora vi chiederete qual'è il problema. Così il codice non da nessun errore. Il problema è ovviamente quando avvio Tomcat.
    Vengo subito indirizzato alla pagina login.jsp, e fin qui tutto ok. Quando però inserisco username e password, o anche quando non inserisco nulla sul form, e clicco il pulsante login, mi da errore.
    Ecco l'eccezione che mi viene mostrata:
    codice:
    java.lang.NullPointerException
    	myBeans.OperatoreDAO.getOperatore(OperatoreDAO.java:21)
    	myServlets.Login.performTask(Login.java:52)
    	myServlets.Login.doPost(Login.java:42)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:722
    Da quanto risulta nel messaggio di errore, sembra che il problema sia nel richiamo alla connessione effettuato dal bean OperatoreDAO. Precisamente dà errore nel punto in cui viene creato il vettore contenente i dati. Il problema è che non so proprio come rimediare.
    Chiedo scusa se il post è lungo ma volevo fornire la migliore visione possibile del problema.
    Grazie in anticipo a chi potrà aiutarmi.
    EDIT: http://imageshack.us/photo/my-images...magineqje.jpg/
    Nell'immagine la struttura del progetto.

  2. #2
    Purtroppo, avendo poca esperienza
    Direi veramente poca....
    Una NullPointerException è l'eccezione più vista e stravista da chi programma in Java ed è anche la più facile da comprendere e rimediare.
    Bando alle ciance veniamo al problema:
    Il mitico java ti dice che ha un riferimento nullo:
    codice:
    java.lang.NullPointerException
    	myBeans.OperatoreDAO.getOperatore(OperatoreDAO.java:21)
    	myServlets.Login.performTask(Login.java:52)
    	myServlets.Login.doPost(Login.java:42)
    Ma non ti dice solamente questo ti dice anche dov'è questo riferimento nullo in particolare alla riga 21 della Classe OperatoreDao;
    La riga 21 di quella classe dovrebbe essere questa:
    codice:
    Vector<Object> v =db.executeSelect(query, "Operatore");
    e qui di riferemento nullo ci può essere solamente uno cioè "db".
    Infatti dal codice postato non c'è da nessuna parte l'inizializzazione di tale oggetto (DBManager) quindi per la risoluzione di questo problema ti basta inizializzare tale oggetto per poi poterci richiamare su tutti i metodi del caso.

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2012
    Messaggi
    9
    Ciao e grazie per aver risposto.

    L'inizializzazione dell'oggetto db c'è. E' all'inizio della classe OperatoreDAO.

  4. #4
    Io all'inizio della classe OperatoreDAO non vedo nessuna inizializzazione ma soli i metodo get e set di tale proprietà (che non richiami da nessuna parte). Se tu la vedi chiarisciti un po le idee sul operatore "new"....

  5. #5
    Utente di HTML.it
    Registrato dal
    Aug 2012
    Messaggi
    9
    Ok chiedo venia per la mia ignoranza in materia.
    Ho corretto l'inizio della classe OperatoreDAO:
    codice:
    public class OperatoreDAO {
    
    	private DBManager db;
    	
    	public OperatoreDAO()
    	{
    		db=new DBManager();
    	}
    	public OperatoreDAO(DBManager db)
    	{
    		this.db=db;
    	}
    Al riavvio del server però mi da un ulteriore errore, questa volta su metodo executeSelect della classe DBManager.
    codice:
    java.lang.NullPointerException
    	myUtil.DBManager.executeSelect(DBManager.java:115)
    	myBeans.OperatoreDAO.getOperatore(OperatoreDAO.java:24)
    	myServlets.Login.performTask(Login.java:52)
    	myServlets.Login.doPost(Login.java:42)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
    Anche questa volta è un problema di inizializzazione?
    Mi pare strano, perchè la classe DBManager ci è stata data come esempio di supporto direttamente dal prof. Mi rendo conto che a seguire gli esempi dei docenti senza capire come funzionano le cose si sbaglia il doppio...

    Grazie in anticipo per la pazienza.

  6. #6
    senza capire come funzionano le cose si sbaglia il doppio...
    Esattamente, che si tratta di un professore di un amico/collega senza capire non si ottiene nulla.
    In particolare anche in questo caso è NPE (NullPointerException) e penso di essere stato chiaro su come risolvere questo tipo di eccezione.
    In particolare adesso essa si verifica alla riga 115 di DbManager e se non erro la riga incriminata
    è la seguente:
    codice:
    st = conn.createStatement();
    e in questo caso solo conn può essere nulla.
    Ho visto che essa viene inizializzata dal metodo startConnection che ritorna un booleano in caso di fallimento (e sicuramente fallisce...). Dentro a tale metodo c'è anche un gestione di un eventuale eccezione che si possa verificare, senza quello stacktrace non posso assulutamente dire perchè la connessione con il database non venga inizilizzata.

  7. #7
    Utente di HTML.it
    Registrato dal
    Aug 2012
    Messaggi
    9
    Allora, per quanto riguarda l'errore precedente, ho dato meglio un'occhiata alla console ed ho notato questa riga:
    codice:
    java.sql.SQLException: [Oracle][ODBC][Ora]ORA-01017: invalid username/password; logon denied
    ..mi sono accorto di aver messo male le credenziali di connessione al db nella classe DBManager, ma ho corretto.
    Subito dopo ho riprovato nuovamente a fare il login, mi ha dato errore e in console appariva questa riga:
    codice:
    java.sql.SQLException: [Oracle][ODBC][Ora]ORA-00904: "ECARUS": identificativo non valido
    dove "ECARUS" è l'username associato al mio operatore. Ho dunque pensato che il problema fosse nel modo in cui la servlet recuperava la stringa dell'username. Così ho fatto una correzione nel metodo getOperatore della classe OperatoreDAO:
    codice:
    	public Operatore getOperatore(String username)
    	{
    		Operatore res = new Operatore();
    		String query = "SELECT * FROM operatore WHERE username = '"+username+"'";
    		Vector<Object> v =db.executeSelect(query, "Operatore");
    		res = (Operatore)v.get(0);
    		return res;
    	}
    in pratica ho aggiunto delle virgolette alla stringa username. Non so se così sia corretto, ma
    riprovando a fare il login si sono verificate due diverse situazioni.
    Se inserisco delle credenziali sbagliate, invece di indirizzarmi alla pagina errore.jsp da me creata, mi da errore:
    codice:
    GRAVE: Servlet.service() for servlet [myServlets.Login] in context with path [/MyTicket] threw exception
    java.lang.ArrayIndexOutOfBoundsException: Array index out of range: 0
    	at java.util.Vector.get(Unknown Source)
    	at myBeans.OperatoreDAO.getOperatore(OperatoreDAO.java:24)
    	at myServlets.Login.performTask(Login.java:52)
    	at myServlets.Login.doPost(Login.java:42)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225)
    	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
    	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
    	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
    	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
    	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
    	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
    	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1001)
    	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:585)
    	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
    	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
    	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    	at java.lang.Thread.run(Unknown Source)
    se invece inserisco un username valido, mi rimanda alla pagina errore.jsp. E questo succede anche solo inserendo l'username, senza password. In effetti la servlet non effettua alcun controllo sulla password ora che ci penso...

    mi sa che sta servlet che mi hanno passato è piena zeppa di orrori

  8. #8
    Lasciami dire che tutti gli errori che ti sono venuti fuori sono errori banali, quindi un cosiglio che ti do è di darti una ripassata alle basi del linguaggio.
    Il primo errore è dato dal metodo
    codice:
    public Operatore getOperatore(String username)
    	{
    		Operatore res = new Operatore();
    		String query = "SELECT * FROM operatore WHERE username = "+username;
    		Vector<Object> v =db.executeSelect(query, "Operatore"); 
    		res = (Operatore)v.get(0);
    		return res;
    	}
    Ovviamente se l'username è sbagliato (e qui che dovresti cmq controllare anche la psw) il vettore che viene fuori dal executeSelect è vuoto, quindi quando cerchi di accedere alla prima posizione di tale vettore (v.get(0)) ti viene sollevata un ArrayIndexOfBound in quanto il vettore è vuoto.
    Per il fatto che non ti funzioni il foward verso una data pagina in base al ruolo il problema sta qui:
    codice:
    String categoria = request.getParameter("ruolo");
    if (o.getRuolo().equals(request.getParameter("ruolo"))){
    
    if ( categoria.equals("Amministratore") )
    Il primo if imponi che il ruolo dell'operatore che sta effettuando il login si uguale ad un "fantomatico" parametro del form "ruolo", ovviamente questa uguglianza non ci sarà mai in quanto il parametro non esiste nel form.
    Stessa cosa vale per categoria.

  9. #9
    Utente di HTML.it
    Registrato dal
    Aug 2012
    Messaggi
    9
    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.

  10. #10
    Mi rendo conto che mi sto perdendo in un bicchiere d'acqua ..ma il problema sta lì, nel metodo getOperatore.
    La documentazione di java ti è molto utile metodo isEmpty
    ti basta richiamare sullo oggetto vector (priva di accedervi v.get(0)) per sapere se il vettore è vuoto oppure no.

    Cmq, mi ripeto, ma con queste premesse mi sa che il progetto non lo porti a casa.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.