View Full Version : filtro java
gaiapuffo
15-05-2012, 10:36
ciao è la prima volta che devo fare un filtro ..ho creato una servlet con pagine jsp separate...so che devo mettere il tag filter nella pagina xhtml che va a chiamare la classe con il nome del filtro...ma questa classe dove la metto?
so che devo mettere il tag filter nella pagina xhtml che va a chiamare la classe con il nome del filtro...
Il tag filter va messo nel file web.xml che deve essere posto nella cartella WEB-INF della tua gerarchia, altrimenti non funziona. Inoltre devi mettere anche il tag filter-mapping per specificare a quali categorie di URL applicare il filtro. Per la sintassi precisa cerca...
ma questa classe dove la metto?
Se stai usando un IDE tipo Eclipse, mettila tra i sorgenti in un package a tuo piacimento. L'importante è che nel tag filter specifichi il fully qualified name della classe così il contenitore la trova.
gaiapuffo
17-05-2012, 15:14
Ho fatto questa tipo di dichiarazione prima della servlet nel file xml in teoria questo tipo di filtro si dovrebbe applicare a qualunque richiesta di pagina..cioè viene chiamato sempre ad ogni richiesta è corretto?Ho creato poi la classe di nome Filtro_login è giusto quindi come ho fatto?ps grazie per la risposta precedente
<filter>
<filter-name>Logger</filter-name>
<filter-class>filters.Filtro_login</filter-class>
</filter>
<filter-mapping>
<filter-name>Logger</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
gaiapuffo
17-05-2012, 15:50
nella filter-class ho scritto filters.Loger_filter ho che la mia classe si chiama loger_filter ho visto nei libri che scrivono filters.nome classe ma va bene mettere filters.nomeclasse ho serve qualcosa di specifico..cioè metto sempre di defualt filters.nomeclassefiltro ho serve mettere qualcosa al posto di filters?
Si dovrebbe andare bene. Non ci sono vincoli ben precisi sui nomi delle classi che implementano il filtro. Puoi dire anche <filter-class>paperopoli.paperino.FiltroDiPaperino</filter-class> purchè tu abbia messo la tua classe (FiltroDiPaperino) nel package 'paperino' a sua volta contenuto nel package 'paperopoli'.
gaiapuffo
18-05-2012, 15:48
ho vari problemi visto che il nostro prof ci sta facendo fare un programma web e noi nn abbiamo ancora seguito il corso di web...ho creato tutto nel file xml ho creato poi la classe filter ora nella classe filter ...la connessione è stata fatto utilizzando le sessioni..nell contenier di filter ci dovrebbe essere memorizzata nome utente password e stato..io voglio controllare se lo stato è studente oppure professore quindi usa la funzione
request.getAttributeName("stato") mi dovrebbe restitiure il valore..in base a questo voglio mandare indietro un altra determinata pagina..ma nn ho trovato nella classe response nessuna funzione analoga
ho vari problemi visto che il nostro prof ci sta facendo fare un programma web e noi nn abbiamo ancora seguito il corso di web...ho creato tutto nel file xml ho creato poi la classe filter ora nella classe filter ...la connessione è stata fatto utilizzando le sessioni..nell contenier di filter ci dovrebbe essere memorizzata nome utente password e stato..io voglio controllare se lo stato è studente oppure professore quindi usa la funzione
request.getAttributeName("stato") mi dovrebbe restitiure il valore..in base a questo voglio mandare indietro un altra determinata pagina..ma nn ho trovato nella classe response nessuna funzione analoga
Non so cosa faccia quel metodo ma per la sessione devi usare getSession(). In particolare quando l'utente fa il login, devi fare:
request.getSession().setAttribute("stato", new String("studente"));
oppure:
request.getSession().setAttribute("stato", new String("professore"));
in base al tipo di utente.
Per recuperare lo stato della sessione poi dovresti fare così:
String stato = (String) request.getSession().getAttribute("stato");
Se stato == null, allora è la prima volta che si connette e quindi lo puoi spedire alla pagine del login altrimenti se è uno studente (o un prof) lo gestisci opportunamente.
gaiapuffo
20-05-2012, 13:26
grazie mille c'è l ho fatta!!
gaiapuffo
22-05-2012, 22:08
cavolo mi serve ancora una mano per l ultima volta......ho scoperto che il programma a un bug cioè quando chiamo la pagina interviene il filtro che fa il controllo e se il risultato non è quello voluto manda indietro una pagina di default..il fatto mi sa e che quando attivo il filtro il filtro se trova l errore manda la pagina di default si no non manda la richiesta alla servlet...può essere?se si che istruzione devo usare nel do filter?
cavolo mi serve ancora una mano per l ultima volta......ho scoperto che il programma a un bug cioè quando chiamo la pagina interviene il filtro che fa il controllo e se il risultato non è quello voluto manda indietro una pagina di default..il fatto mi sa e che quando attivo il filtro il filtro se trova l errore manda la pagina di default si no non manda la richiesta alla servlet...può essere?se si che istruzione devo usare nel do filter?
Se i controlli che fai fare al filtro falliscono, potrebbe essere una buona idea quella di forwardare la richiesta ad una opportuna pagina di errore (che personalizzerai secondo le tue esigenze). Per fare ciò prendi spunto da questa discussione (http://www.theserverside.com/discussions/thread.tss?thread_id=33354).
gaiapuffo
23-05-2012, 08:55
mi sono spiegato male questa cosa l ho già fatta..quando il controllo va male mando indietro la pagina di errore e questo funziona quando invece il controllo è positivo credo che il pacchetto non arrivi alla servlet....può essere?per il fatto che il messaggio viene intercettato dal filtro..il filtro chiama do filter e qui faccio il controllo che se esito negativo spedisco indietro la pagina di errore..se invece va tutto bene e il filtro finisce...viene mandato in automatico il pacchetto alla servlet..oppure devo usare un istruzione nel filtro che indica di mandare il messaggio alla servlet?
Ah scusa, non avevo capito :)
Quando il filtro finisce i suoi compiti, per proseguire nella catena di filtri/servlet devi chiamare doFilter così:
public doFilter(ServletRequest req, ServletResponse res, FilterChain chain)
{
... ...
...
/* Qui fai qualcosa e alla fine chiami*/
chain.doFilter(req,res);
}
Questo fa passare il controllo al prossimo filtro (se ve ne sono) altrimenti alla servlet finale!
gaiapuffo
23-05-2012, 16:00
grazie mille sei stato disponibile e spieghi in maniera semplice. Ci sono riuscito!!ora va tutto:) come scusante o che ho un prof stupido che ci affida progetti di web senza mai avere fatto nulla di web...
vBulletin® v3.6.4, Copyright ©2000-2026, Jelsoft Enterprises Ltd.