Home

Un filtro (J2ee) è qualcosa ‘simile ad una servlet’ che puo’ essere usata per filtrare le richieste in arrivo ad una web-application. Ne ho usata una per implementare un semplice controllo degli accessi di una web-app.

Intanto si mappi il filtro newl file web.xml:

<filter>
<filter-name>AuthFilter</filter-name>
<filter-class>common.AuthFilter</filter-class>
</filter>

<filter-mapping>
<filter-name>AuthFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

E’ possibile specificare quale tipo di richieste il filtro elaborerà. In questo caso tutte (/*). Altrimenti sono possibili cose tipo tutte le jsp (/*.jsp) o tutte le action (/*.do) e così via.

E’ poi necessario scrivere la classe per il filtro che estenderà la javax.servlet.Filter.

public class AuthFilter implements Filter {

private FilterConfig filterConfig;

public void doFilter(ServletRequest req, ServletResponse res, FilterChain fc)

throws java.io.IOException, javax.servlet.ServletException {

String URI = ((HttpServletRequest)req).getRequestURI();

try {
//.. CONTROLLO SE POSSO ACCEDERE ALLA RISORSA…

if ( check-if-URI is permitted ) {
fc.doFilter(req, res); // passo al prossimo eventuale elemento della catena di filtri
} else {
//torno alla login
req.getRequestDispatcher(“index.jsp”).forward(req,res);

}
} catch (Exception e) {
req.getRequestDispatcher(“index.jsp”).forward(req,res);
}
}

public FilterConfig getFilterConfig() {
// Execute tasks
return filterConfig;
}

public void setFilterConfig(FilterConfig cfg) {
// Execute tasks
filterConfig = cfg;
}
}

Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...