Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 23
  1. #1

    Filter - form HTML in POST verso un filtro

    Ciao,

    è possibile spedire una form, via POST, da una pagina HTML verso un filtro?

    nella index.html
    codice:
    <FORM ACTION="/progetto/FiltroLogin" METHOD=POST>
    e nel filtro, fare le verifiche sul login, quindi redirezione verso altre pagine a seconda del login....



    io sto provando ma mi da 404 pagina non trovata.
    Temo che un filtro funzioni solo tra se stesso oppure chiamato da altra servlet...

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Filter - form HTML in POST verso un filtro

    Originariamente inviato da cagnaluia
    è possibile spedire una form, via POST, da una pagina HTML verso un filtro?
    La questione è posta male, direi .... nel senso che un javax.servlet.Filter non è qualcosa che si "indirizza" direttamente .... non è, insomma, una risorsa "finale" come una pagina html, un pdf o una pagina jsp.

    Un filtro può essere "mappato" in due modi: su un pattern URL o su una servlet specifica (usando lo stesso nome indicato da <servlet-name>).

    Quindi fintantoché tu richiedi una risorsa tale per cui sia anche mappato un filtro ... beh, ovviamente il filtro o i filtri mappati vengono eseguiti.

    I filtri comunque sono cose interne alla webapp ... non devi mettere un URL del tipo "blabla/FiltroLogin".
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    no, ok.


    allora.. ricapitoliamo: un javax.servlet.Filter, è come una servlet ma fa un altra cosa, il filtro.
    NON è mappato sul file web.xml, probabilmente PUO' essere mappato su web.xml ma immagino venga meno la sua funzione. Perciò per questo motivo non posso riferirlo direttamente DALLA pagina index.html.

    Sono nella direzione giusta?


    Bene, se è così, allora... posso far riferire una Servlet al file index.html. TALE servlet sarà nascosta, e utilizzata solo dal filtro, tramite i tag di mapping sul web.xml.
    codice:
        <filter-mapping>
            <filter-name>FiltroLogin</filter-name>
            <servlet-name>ServletLogin</servlet-name>
       </filter-mapping>
    perciò io su index.html non farò


    codice:
    <FORM ACTION="/progetto/FiltroLogin" METHOD=POST>
    bensì:

    codice:
    <FORM ACTION="/progetto/ServletLogin" METHOD=POST>

    ho inteso giusto? (anche se.. a questo punto sono altre le cose che non mi tornano....)

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da cagnaluia
    un javax.servlet.Filter, è come una servlet ma fa un altra cosa, il filtro.
    La filosofia dal punto di vista OOP è la stessa. javax.servlet.Servlet e javax.servlet.Filter sono interfacce e bisogna definire delle classi "concrete" che, alla fin fine, implementano tali interfacce (anche se per le servlet c'è una "gerarchia" più particolare e predefinita).
    E anche il "ciclo di vita" più o meno è lo stesso a grandi linee (c'è una fase di inizializzazione, una fase di "servizio" e una fase di distruzione).

    Originariamente inviato da cagnaluia
    NON è mappato sul file web.xml
    Sbagliato. I filtri vanno descritti nel DD (web.xml) tramite <filter> e i sotto elementi <filter-name> e <filter-class> e poi "mappati" tramite <filter-mapping> che contiene <filter-name> e poi uno dei due: <url-pattern> o <servlet-name>.
    In un modo molto "parallelo" anche se non uguale a quello che succede per le servlet.

    Originariamente inviato da cagnaluia
    probabilmente PUO' essere mappato su web.xml ma immagino venga meno la sua funzione.
    No. Vedi appunto quanto detto sopra.

    Originariamente inviato da cagnaluia
    Perciò per questo motivo non posso riferirlo direttamente DALLA pagina index.html.

    Sono nella direzione giusta?
    Ehm ..... forse no. (? .. non lo so .. dipende da cosa volevi fare)

    Originariamente inviato da cagnaluia
    bensì:

    codice:
    <FORM ACTION="/progetto/ServletLogin" METHOD=POST>

    ho inteso giusto? (anche se.. a questo punto sono altre le cose che non mi tornano....)
    Beh ma ripeto, dipende da come vuoi gestire la autenticazione.
    Una cosa tipica che si fa in certi casi è mettere un filtro che intercetta qualunque richiesta e che faccia una logica di questo tipo: sei loggato? Allora continua verso la "risorsa" (qualunque essa sia). Non sei loggato? Allora redirect o forward verso la pagina di login.

    Ma questo è solo uno scenario, che dipende anche da come deve essere fruito il sito da parte degli utenti. Se tutte (o gran parte) delle pagine deve essere acceduto solo essendo "loggati", allora un filtro che intercetta tutte (o quella parte) di richieste può essere una valida soluzione.
    Se il sito è di quelli dove tutte le pagine sono accessibili a chiunque e poi solo se si è loggati si "vede" qualcosa in più o di diverso, allora un filtro non serve! Metti nelle pagine un link alla pagina di login e il form di login farà una richiesta es. a blabla/login.do che sarà mappato (tipicamente) solo su una servlet e basta.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    si ma..

    il mapping avviene tramite tag differenti da quelli di una servlet.. questo indendevo io (per non essere mappata). meaculpa. Scusami non sono stato preciso.


    esempio:

    codice:
        <filter>
            <filter-name>FiltroLogin</filter-name>
            <filter-class>mypackage.FiltroLogin</filter-class>
        </filter>
        <filter-mapping>
            <filter-name>FiltroLogin</filter-name>
            <servlet-name>Welcome</servlet-name>
       </filter-mapping>

    codice:
      <servlet>
            <servlet-name>Welcome</servlet-name>
            <servlet-class>mypackage.Welcome</servlet-class>
        </servlet>
        <servlet-mapping>
            <servlet-name>Welcome</servlet-name>
            <url-pattern>/Welcome</url-pattern>
        </servlet-mapping>

    Beh ma ripeto, dipende da come vuoi gestire la autenticazione.
    Una cosa tipica che si fa in certi casi è mettere un filtro che intercetta qualunque richiesta e che faccia una logica di questo tipo: sei loggato? Allora continua verso la "risorsa" (qualunque essa sia). Non sei loggato? Allora redirect o forward verso la pagina di login.
    esattamente questo.

    Io voglio gestire un login e fare in modo che dopo aver compilato un form con utente e password, tutte le pagine che ci stanno (logicamente) sotto siano visibili solo per l'utente abilitato.
    Tutte le pagine saranno quindi mappate all'interno del web.xml come appartenenti al <filter-mapping>

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da cagnaluia
    Io voglio gestire un login e fare in modo che dopo aver compilato un form con utente e password, tutte le pagine che ci stanno (logicamente) sotto siano visibili solo per l'utente abilitato.
    Tutte le pagine saranno quindi mappate all'interno del web.xml come appartenenti al <filter-mapping>
    Benissimo, fai un filtro con la logica detta sopra. Poi mappa il filtro in modo che "intercetti" tutte le richieste alle risorse (pagine o altri documenti) "protette".
    Il form di login andrà ad una servlet che gestisce l'autenticazione.

    Se la situazione è che il filtro intercetta tutto, allora becca pure la pagina di login e la servlet di autenticazione e in questi casi si fa in modo che il filtro sia "furbo" da capire che per la pagina di login/servlet di autenticazione non deve fare quella logica ma andarci subito e basta.
    Se nel tuo caso puoi fare in modo di applicare il filtro proprio solo alle risorse protette allora tanto meglio, un cavillo in meno.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    io sul filtro, metterei la logica per trovare l'utente dal database e confrontare la password.
    Setto una variabile AllowUser = true.
    1. se l'utente esiste e la password è corretta, passa alla servlet "Welcome".
    2. se non esiste l'utente oppure la pwd è errata, ritorna alla login.

  8. #8
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da cagnaluia
    io sul filtro, metterei la logica per trovare l'utente dal database e confrontare la password.
    No assolutamente. Quello è il compito di una servlet. Il filtro dovrebbe solo "guardare" da qualche parte ... e quel "qualche" tipicamente è la sessione (HttpSession), se esiste (non è il filtro che dovrebbe crearla!), e in modo particolare un qualche attributo es. "logged" (con un qualunque valore) o "user" che magari è associato ad un oggetto User. Insomma ... qualunque attributo che tu hai stabilito per qualificare l'utente come "loggato".

    P.S. queste cose non sono complicate ... ma bisogna avere la giusta "ottica".
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  9. #9
    perciò userò una servlet per gestire quello che ho scritto sopra, la quale creerà un oggetto session da passare al filtro.

    ma allora... a questo punto, non serve nemmeno più l'index.html...
    potrei fare tutto dentro ad una servlet con vari "if"

    se ho l'utente mi passa il "Welcome". Se NON ho l'utente, mi riscrive la pagina di login.

  10. #10
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da cagnaluia
    ma allora... a questo punto, non serve nemmeno più l'index.html...
    Ma una pagina con il form la devi pure avere (che sia html statico o pagina jsp) ... no? Mica vorrai generarla con una servlet??!

    Originariamente inviato da cagnaluia
    potrei fare tutto dentro ad una servlet con vari "if"
    Se intendi che faccia autenticazione o pagina di login o altro ... no, pessima idea. Una servlet dovrebbe avere 1 compito .... non di più distinti.
    La servlet scopre che la autenticazione è ok? allora forward o meglio redirect ad una pagina di "home" o di "successo" .... dipende. La autenticazione è fallita? forward o redirect alla pagina di login. Ma questa non dovrebbe scriverla direttamente la servlet.
    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.