Visualizzazione dei risultati da 1 a 10 su 10

Hybrid View

  1. #1
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da ubisum Visualizza il messaggio
    Deve conservare questo parametro fin tanto che l'utente termini le modifiche al contatto, cioè fino all'istante in cui il suo metodo doPost non sia invocato.
    Come stavi facendo, con UNA variabile (che oltretutto come ho detto prima è in UNA sola istanza della servlet) proprio NO. Se avessi 2, 3, 4 ecc... utenti che stanno gestendo contatti con Id differenti? Dove li tieni questi Id?

    Una possibilità sarebbe tenere il Id nella sessione. La sessione è "per client". Ma non è comunque perfetta/ottimale come soluzione. L'utente potrebbe fare il furbo e tenersi 2 schede del browser aperte che condividono la stessa sessione e in una gestire un contatto con un certo Id e nell'altra scheda tentare di gestire un altro contatto. Avresti lo STESSO problema.

    Quote Originariamente inviata da ubisum Visualizza il messaggio
    Come potrei fare questo in modo sicuro ed efficiente?
    La soluzione pulita e corretta è davvero semplice: il doPost riceve il contactId insieme agli altri parametri, che dovrà ovviamente essere inviato dal updateContact.jsp.
    Tutto qui.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  2. #2
    Utente di HTML.it L'avatar di ubisum
    Registrato dal
    Mar 2007
    Messaggi
    22
    Quote Originariamente inviata da andbin Visualizza il messaggio
    Come stavi facendo, con UNA variabile (che oltretutto come ho detto prima è in UNA sola istanza della servlet) proprio NO. Se avessi 2, 3, 4 ecc... utenti che stanno gestendo contatti con Id differenti? Dove li tieni questi Id?

    Una possibilità sarebbe tenere il Id nella sessione. La sessione è "per client". Ma non è comunque perfetta/ottimale come soluzione. L'utente potrebbe fare il furbo e tenersi 2 schede del browser aperte che condividono la stessa sessione e in una gestire un contatto con un certo Id e nell'altra scheda tentare di gestire un altro contatto. Avresti lo STESSO problema.


    La soluzione pulita e corretta è davvero semplice: il doPost riceve il contactId insieme agli altri parametri, che dovrà ovviamente essere inviato dal updateContact.jsp.
    Tutto qui.
    Grazie per la risposta.
    Sono felice di leggere nelle tue parole (dette da uno certamente più esperto) alcune delle considerazioni che avevo fatto.
    Anche io avevo valutato la possibilità di aggiungere un attributo di sessione ad hoc, ma ho scartato questa soluzione perché ho ritenuto che non fosse una buona idea infarcire la sessione di attributi, specie con quelli che hanno una brevissima sopravvivenza.
    Quindi, prima di decidere (sbagliando) per il campo privato della servlet, mi sono chiesto: può updateContact.jsp, che riceve l'id del contatto tramite URL, passare quel medesimo id al metodo doPost della sua servlet, insieme ai parametri contenuti nel form per modificare i dati?
    Lo si potrebbe fare, per esempio, usando del semplice codice JSP?

    Grazie.

  3. #3
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da ubisum Visualizza il messaggio
    che non fosse una buona idea infarcire la sessione di attributi, specie con quelli che hanno una brevissima sopravvivenza.
    La questione qui non è tanto della "durata" ma del fatto che la sessione è UNA sola (e quindi ci tieni 1 Id) mentre nulla vieta all'utente di tenersi diversi tab o finestre di quella stessa istanza del browser aperte (che condividono la sessione) e tentare di gestire contatti con Id diversi. Avresti ben presto dei casini.

    Quote Originariamente inviata da ubisum Visualizza il messaggio
    mi sono chiesto: può updateContact.jsp, che riceve l'id del contatto tramite URL, passare quel medesimo id al metodo doPost della sua servlet, insieme ai parametri contenuti nel form per modificare i dati?
    Lo si potrebbe fare, per esempio, usando del semplice codice JSP?
    Quando fai

    request.getRequestDispatcher("updateContact.jsp"). forward(request, response);

    i dati del contatto li hai tutti nell'oggetto Contact che passi nella sessione e sono quindi accessibili alla pagina.
    Quindi puoi benissimo fare in modo che al submit del form venga inviato ANCHE il Id del contatto.
    Il Id del record di norma non lo si fa editare dall'utente, quindi non lo metterai certo in un campo di testo visibile. Ma lo puoi mettere in un campo "hidden", che viene comunque inviato con il resto dei dati nel form.
    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.