Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    Primi passi con le servlet e jsp

    Spero sia la sezione giusta...
    Ad ogni modo sto cercando di imparare ad usare le servlet con java + eclipse + tomcat, ma mi sono inbattuto in un dubbio, e mi servirebbe un aiutino per uscirne.
    Dunque, sto simulando un sistema di login.
    Ho la pagina principale (jsp) fatta in questo modo (scrivo solo il codice essenziale ai fini della comprensione):
    codice:
    <form name="loginform" method="post" action="testLogin">
    Username:<input type="text" name="username" value="">
    Password:<input type="password" name="password" value="">
    <input type="submit" name="Submit" value="Accedi">
    </form>
    Poi ho la pagina testLogin.java:
    codice:
    String user, pass;  		
    user = request.getParameter("username"); 		
    pass = request.getParameter("password"); 		
    if (user.equals("admin") && pass.equals("admin"))
       request.setAttribute("isLogged", "1"); 		
    else 			
       request.setAttribute("isLogged", "0");
    request.getRequestDispatcher("esitoLogin.jsp").forward(request, response);
    La pagina esitoLogin.jsp è così fatta:
    codice:
    <h1>Esito login</h1>
    <% 
    if ("1".equals(request.getAttribute("isLogged"))) 
    { 	
    %> 	
    <h3>SEI LOGGATO!</h3>
     	
    effettua il logout 	
    <%
    } else {
    %>
    <h3>Non sei ancora loggato?</h3>
    effettua il login 	<% 		
    } 	
    %>
    Ed eccomi quà, non ho idea di come fare il logout, o meglio di come richiamare una pagina java che mi imposti a "0" il valore dell'attributo isLogged.

    Un'altra domanda, è possibile tipo se uno effettua il login tornare nella pagina iniziale (non in questo caso che sono andato in una pagina nuova) e costringerla tipo a refresharsi?

    Grazie per l'aiuto, per favore risposte semplici, sono alle prime armi

  2. #2
    Allora per come hai effettuato il login, indovina un pò non avrai "mai" bisogno di effettuare il logout....
    Spiego, settando l'attributo "isLogged" sull'oggetto Request che rappresenta la richiesta attuale all'application server un ulteriore richiesta (Request) non lo conterrà, almeno non automaticamente, quindi una seconda richiesta non avrà questo attributo settato e quindi l'utente non sarà autenticato.
    Per ovviare a questo di solito si usa un'ulteriore oggetto messo a disposizione dalle framework J2EE che è l'oggetto HttpSession che rappresenta la sessione web che un client instaura con un application server al momento in cui effettua la sua prima richiesta. Per ottenere l'oggetto httpSession ti basta invocare il seguente metodo:
    codice:
    HttpSession session = request.getSession(false);
    Il booleano che vedi (in questo caso false), serve a dire al framework se creare una nuova sessione nel caso essa non esista (prima richiesta).
    Per quanto riguarda l'impostazione dei parametri i metodo da invocare è il seguente:
    codice:
    session.putValue("isLogged","1");
    Per il logout a questo punto di basta invalidare la sessione.
    codice:
    session.invalidate();
    Per quanto riguarda la tua ultima domanda c'è bisogno che chiarisci meglio cosa vuol dire refresharsi ? Vuoi che cambi il contenuto di essa oppure cosa ?

  3. #3
    Grazie, stasera dopo il lavoro cerco di fare come suggerisci.
    Si intendo proprio che cambi il contenuto, in pratica al posto del form di login dovrebbe invece esserci tipo "benvenuto admin"

  4. #4
    Ok domanda, per fare la session.invalidate, credo debba farlo in un file java, come faccio a richiamarlo? L'unico modo che conosco è la submit


    EDIT: Forse si fa così:
    nella pagina esitoLogin ho messo
    effettua il logout

    Poi ho creato una servlet chiamata effettuaLogout.java nella quale ho scritto:
    request.setAttribute("isLogged", "0");
    request.getRequestDispatcher("esitoLogin.jsp").for ward(request, response);

    Senza usare il discorso session così può andare o si può fare di meglio? (ad esempio solo con un jsp ed una servlet)

    Comunque grazie!

  5. #5
    Come ti dicevo ieri:
    codice:
    request.setAttribute("isLogged", "0");
    con questa istruzione tu vai a settare un attributo sulla richiesta quindi quando dalla pagina "esitoLogin.jsp" fare un ulteriore richiesta, es link ad un'altra pagina per esempio, quell'attributo non esisterà più quindi e come se l'utente non fosse loggato; ecco perchè ti avevo consigliato di usare la session.
    Per quanto riguarda l'invalidamento delle sessione, session.invalidate(), essa può essere fatta come dici tu su una servlet oppure in una .jsp usando le scriplet (<% session.invalidate();%>).

  6. #6
    Per favore mi puoi dire che ha di sbagliato questo esercizio che praticamente consente di scegliere una preferenza tramite combobox, e calcolare la percentuale delle preferenze di una certa opzione.

    [CODE]
    <form action="CalcolaSondaggio">
    <table border="1">
    <tr>
    <th></th>
    <th>Opzione</th>
    <th>%</th>
    </tr>
    <tr>
    <%
    String scelta = (String)request.getSession().getAttribute("ultimaP referenza");
    if (scelta!=null)
    if (scelta.equals("a")) {
    %>
    <td><input type="radio" name="voto" value="A" checked="checked"/></td>
    <%
    } else {
    %>
    <td><input type="radio" name="voto" value="A" /></td>
    <%
    }
    %>
    <td>Voto Alto</td>
    <td><%= request.getSession().getAttribute("fA") %></td>
    </tr>
    <tr>
    <%
    scelta = (String)request.getSession().getAttribute("ultimaP referenza");
    if (scelta!=null)
    if (scelta.equals("m")) {
    %>
    <td><input type="radio" name="voto" value="M" checked="checked"/></td>
    <%
    } else {
    %>
    <td><input type="radio" name="voto" value="M" /></td>
    <%
    }
    %>
    <td>Voto Medio</td>
    <td><%= request.getSession().getAttribute("fM") %></td>
    </tr>
    <tr>
    <%
    scelta = (String)request.getSession().getAttribute("ultimaP referenza");
    if (scelta!=null)
    if (scelta.equals("b")) {
    %>
    <td><input type="radio" name="voto" value="B" checked="checked"/></td>
    <%
    } else {
    %>
    <td><input type="radio" name="voto" value="B" /></td>
    <%
    }
    %>
    <td>Voto Basso</td>
    <td><%= request.getSession().getAttribute("fB") %></td>
    </tr>
    </table>
    <input type="submit" value="vota">
    </form>
    [/SPOILER]
    e poi nel file java:
    codice:
     
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		Integer totale = (Integer) (request.getSession().getAttribute("totale"));
    		Integer totA = (Integer) (request.getSession().getAttribute("totA"));
    		Integer totM = (Integer) (request.getSession().getAttribute("totM"));
    		Integer totB = (Integer) (request.getSession().getAttribute("totB"));
    		
    		if (totale == null)
    			totale = 0;
    		if (totA == null)
    			totA = 0;
    		if (totM == null)
    			totM = 0;
    		if (totB == null)
    			totB = 0;
    		
    		String voto = request.getParameter("voto");
    		
    		if ("A".equals(voto)) {
    			totA++;
    			request.setAttribute("ultimaPreferenza", "a");
    		}
    		else if ("M".equals(voto)) {
    			totM++;
    			request.setAttribute("ultimaPreferenza", "m");
    		}
    		else if ("B".equals(voto)) {
    			totB++;
    			request.setAttribute("ultimaPreferenza", "b");
    		}
    		
    		totale = totA + totM + totB;
    		
    		request.getSession().setAttribute("totale", totale);
    		request.getSession().setAttribute("totA", totA);
    		request.getSession().setAttribute("totM", totM);
    		request.getSession().setAttribute("totB", totB);
    		
    		request.getSession().setAttribute("fA", 100.0 * totA / totale);
    		request.getSession().setAttribute("fM", 100.0 * totM / totale);
    		request.getSession().setAttribute("fB", 100.0 * totB / totale);
    		
    		request.getRequestDispatcher("sondaggio.jsp").forward(request, response);
    	}
    Non funziona il maledetto, dove sbagliooooo

    che differenza c'è tra <% ... e <%= ...?

  7. #7
    Alla fine mi pare di esserci riuscito, a quanto pare è eclipse che non va molto d'accordo con i jsp, lo stesso file che mi dava una marea di errori, se lo chiudo e lo riapro non me li segna più. Ora l'unico problema da risolvere è quello relativo di xpath. Mi spiego, se metto il file java in un package e il jsp in una cartella, poi quando si richiamano a vicenda non si trovano più

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.