Filtre
Fermé
abourouq123
Messages postés
7
Date d'inscription
samedi 23 avril 2016
Statut
Membre
Dernière intervention
11 juillet 2016
-
23 avril 2016 à 16:06
abourouq123 Messages postés 7 Date d'inscription samedi 23 avril 2016 Statut Membre Dernière intervention 11 juillet 2016 - 23 avril 2016 à 23:52
abourouq123 Messages postés 7 Date d'inscription samedi 23 avril 2016 Statut Membre Dernière intervention 11 juillet 2016 - 23 avril 2016 à 23:52
A voir également:
- Filtre
- Photo filtre 7 gratuit - Télécharger - Retouche d'image
- Filtre teams - Accueil - Visio
- Filtre google sheet ne fonctionne pas ✓ - Forum Excel
- Excel filtre date ne fonctionne pas ✓ - Forum Excel
- Filtre manga - Accueil - TikTok
1 réponse
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
23 avril 2016 à 17:33
23 avril 2016 à 17:33
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.
23 avril 2016 à 23:52