A voir également:
- Filtre
- Photo filtre 7 gratuit - Télécharger - Retouche d'image
- Filtre whatsapp - Accueil - Messagerie instantanée
- Filtre teams - Accueil - Visio
- Filtre manga - Accueil - TikTok
- Télécharger filtre lumière bleue pc gratuit - Télécharger - Divers Utilitaires
1 réponse
Bonjour,
Les filtres permettent de rajouter un comportement soit avant, soit après le traitement de chaque requête pour laquelle le filtre est configuré.
Exemple concret :
Dans le cas où le traitement de la requête renverrait une Exception on pourrait se retrouver avec une page d'erreur affichée à l'utilisateur :

Ces affichages là ne sont généralement pas utiles, d'une part parce que l'utilisateur de base ne saura pas comprendre le message, d'autre part parce que si l'utilisateur comprend l'erreur cela lui apporte des informations sur le code qu'il n'a pas à connaître...
Un moyen d'éviter ces messages d'erreurs c'est de filtrer le traitement de la requête, par exemple avec un try/catch qui va laisser s'exécuter le reste du traitement, mais en cas d'erreur va la récupérer pour afficher en résultat un message d'alerte.
Ne pas oublier de déclarer le filtre dans le web.xml, sachant que l'ordre des filtres dans le fichier web.wml correspond à l'ordre des filtres à l'exécution. Dans notre cas, il vaut mieux que notre filtre soit tout en haut, cela permettra éventuellement de récupérer les exceptions provoquées par les filtres en dessous. Et comme il concerne tout le serveur on va filtrer sur /*
Maintenant si tu veux tester ceci tu n'as qu'à provoquer intentionnellement une erreur sur les autres filtres ou servlet de ton serveur et voir ce qui se passe avec ou sans mon filtre.
Les filtres permettent de rajouter un comportement soit avant, soit après le traitement de chaque requête pour laquelle le filtre est configuré.
Exemple concret :
Dans le cas où le traitement de la requête renverrait une Exception on pourrait se retrouver avec une page d'erreur affichée à l'utilisateur :

Un moyen d'éviter ces messages d'erreurs c'est de filtrer le traitement de la requête, par exemple avec un try/catch qui va laisser s'exécuter le reste du traitement, mais en cas d'erreur va la récupérer pour afficher en résultat un message d'alerte.
package ccm.kx.servlet; import javax.servlet.*; import javax.servlet.http.*; public class ExceptionFilter implements Filter { @Override public void init(FilterConfig filterConfig) { // do nothing } @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) { try { filterChain.doFilter(request, response); } catch (Throwable t) { t.printStackTrace(); try { response.reset(); response.getWriter().println("An unexpected error occured."); if (response instanceof HttpServletResponse) { ((HttpServletResponse) response).setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); } } catch (Throwable t2) { t2.printStackTrace(); } } } @Override public void destroy() { // do nothing } }
Ne pas oublier de déclarer le filtre dans le web.xml, sachant que l'ordre des filtres dans le fichier web.wml correspond à l'ordre des filtres à l'exécution. Dans notre cas, il vaut mieux que notre filtre soit tout en haut, cela permettra éventuellement de récupérer les exceptions provoquées par les filtres en dessous. Et comme il concerne tout le serveur on va filtrer sur /*
<web-app> <!-- Filtre qui récupère toutes les exceptions --> <filter> <filter-name>ExceptionFilter</filter-name> <filter-class>ccm.kx.servlet.ExceptionFilter</filter-class> </filter> <filter-mapping> <filter-name>ExceptionFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> ... </web-app>
Maintenant si tu veux tester ceci tu n'as qu'à provoquer intentionnellement une erreur sur les autres filtres ou servlet de ton serveur et voir ce qui se passe avec ou sans mon filtre.
abourouq123
Messages postés
7
Date d'inscription
Statut
Membre
Dernière intervention
merci bcp c'est une belle explication