Visualizzazione dei risultati da 1 a 7 su 7

Discussione: sessioni in jsp

Visualizzazione discussione

  1. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da francesco51 Visualizza il messaggio
    il mio problema è che non riesco a capire come devo fare per mentenere la sessione aperta se vado su un'altra pagina... devo utilizzare qualcosa nella nuova pagina? grazie.
    La sessione, con tutti gli eventuali dati chiave->valore contenuti, sta sempre e solo sul server. Quello che client e server al massimo si scambiano è solo il ID della sessione. Questo può essere fatto in due modi: tramite cookie o tramite l'url. I cookie però sono disabilitabili su tutti i vari browser, quindi l'alternativa sicura è solo quella del url.

    Se consideriamo solo lo sfruttamento dei cookie, non hai nulla di particolare da fare. Nella Servlet A farai:

    HttpSession session = request.getSession();

    ed otterrai un (nuovo, eventualmente) HttpSession. Se nella pagina A che l'utente visualizza a seguito della richiesta alla Servlet A, c'è un link che porta ad una pagina B, allora nella request ad una Servlet B, idem farai:

    HttpSession session = request.getSession();

    ed otterrai lo stesso HttpSession ottenuto dalla precedente richiesta. Nota che (e lo dice bene la documentazione), getSession() deve essere invocato prima che la response sia "committed", altrimenti ottieni IllegalStateException.

    E se i cookie fossero disabilitati? Se vuoi che il tuo sito funzioni anche in questo caso, allora devi prendere degli accorgimenti, ovvero devi fare il encoding di tutti gli url che vengono emessi in output sulle pagine.

    Se scrivi sulla response dalla Servlet, dovrai fare es.:

    codice:
    PrintWriter out = response.getWriter();
    
    out.print("<a href=\"");
    out.print(response.encodeURL("blabla/paginaB"));
    out.print("\">pagina B</a>");

    Nelle JSP si può usare più comodamente il tag <c:url> di JSTL:

    codice:
    <a href="<c:url value="blabla/paginaB"/>">pagina B</a>

    Questo encoding accoda dietro il url il ID di sessione in una forma particolare che il servlet container/application server è poi in grado di riconoscere ad una successiva request con quel link.
    Ultima modifica di andbin; 05-04-2015 a 11:05
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

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.