2014-04-30 20 views
5

sto lavorando ad un'applicazione di primavera in cui mi voglio fare alcuni controlli di sicurezza come MD5 verifica dei file, DB controllo, la versione dell'applicazione controllare eccintercettori o filtri

Ho letto di intercettori e filtri, ma ancora un confondere su quale sia buono da usare.

Indipendentemente dai documenti che ho letto, viene specificato che i filtri e gli intercettori possono essere utilizzati entrambi per la registrazione e il controllo, quindi quale è utile per questo scenario. Anche tutti questi controlli di sicurezza (controllo MD5 di file, controllo DB, controllo versione applicazione) possono essere configurati significa che il controllo DB è consentito, il controllo versione applicazione è consentito allo stesso modo.

+0

duplicato del [Primavera HandlerInterceptor vs filtri servlet] (http://stackoverflow.com/questions/8000844/spring-handlerinterceptor-vs-servlet -filters) – anre

risposta

9

A mio parere uno dei più grande differenza tra filtri e intercettori è:

filtro funziona solo nelle applicazioni web J2EE, non è possibile utilizzare al di fuori dei server applicativi, intercettori possono lavorare in diversi componenti e non dipende il livello web, in intercettatore riassuntivo ha un campo largo rispetto ai filtri. Se si prevede di spostare alcuni componenti all'esterno del contenitore, è necessario prendere in considerazione l'utilizzo di intercettori.

I filtri funzionano di più nel dominio richiesta/risposta, mentre l'altro interceptor agisce più nel dominio di esecuzione del metodo.

Se devi fare qualcosa che potrebbe influenzare la richiesta o la risposta alla tua applicazione come la registrazione, la sicurezza, la verifica, o influenzerai i dati che arrivano su di loro, la tua opzione è filtro, non dimenticare la capacità della presa che quelli forniscono.

intercettori sono utilizzati in combinazione con Java EE è riuscito classi per consentire agli sviluppatori per richiamare i metodi di intercettazione su una classe di destinazione associata, in collaborazione con invocazioni di metodi o eventi del ciclo di vita

+0

Grazie per la tua risposta rapida, potrei sbagliarmi ma, come da frase, i filtri funzionano a livello web e gli intercettori possono essere utilizzati in qualsiasi posto, giusto? – Amogh

+0

Il filtro è un componente Web, mentre gli intercettori possono essere definiti all'interno di una classe di destinazione come metodo di intercettazione o in una classe associata chiamata classe interceptor e yes può essere utilizzato ovunque dipende dal framework se si utilizza uno, javax.interceptor ampiamente – Koitoer

+0

Ok, ho capito ora.Andrò con gli intercettori ancora non ho intenzione di spostare qualsiasi componente al di fuori del contenitore perché non mi è ancora chiaro cosa voglia dire uscire dal contenitore. Userò gli intercettori perché se qualche controllo di sicurezza fallisce, allora posso cambiare ModelAndView che può essere fatto usando gli intercettori. è corretto? – Amogh

3

sono in ritardo alla risposta , Anche se voglio condividere le mie opinioni su di esso.

Un filtro viene utilizzato nel livello Web solo come è definito in web.xml. Non possiamo usarlo fuori dal contesto web. Mentre Spring Interceptors può essere utilizzato ovunque perché è definito nel contesto dell'applicazione.

Considerando la differenza sopra, per l'autenticazione di accesso e il controllo delle richieste in arrivo da pagine Web dovremmo utilizzare un filtro servlet. Mentre per implementare la registrazione e il controllo del livello aziendale e molte altre funzionalità, dovremmo utilizzare un Interceptor.

Oltre a questo, se si utilizza il MVC Spring. allora vorresti mantenere tutta la logica del filtraggio o dell'intercettazione in un quadro, piuttosto che scrivere in logica qualche logica nel filtro servlet e altri in primavera.

Primavera dare uno in più afterCompletion punto di controllo in aggiunta alla prima e dopo i metodi