doFilter pas appelé
Pourrait vous aider à vérifier pourquoi doFilter pas appelé
web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>/WEB-INF/log4j.properties</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
<filter>
<filter-name>roseFilter</filter-name>
<filter-class>net.paoding.rose.RoseFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>roseFilter</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
<dispatcher>INCLUDE</dispatcher>
</filter-mapping>
</web-app>
de la classe de signature:
import org.springframework.web.filter.GenericFilterBean;
public class RoseFilter extends GenericFilterBean {
404 est renvoyée lors de l'appel http://localhost:8080/hello/world, j'ai mis les points d'arrêt à
doFilter, il semble doFilter pas appelé?(J'ai essayé de tomcat 6.0.18, 6.0.29, jdk1.6)
Ne
Je suis assez sûr que je suis tombé sur moi-même avant, avec la
la ressource n'a pas nécessairement besoin d'être une physique de la ressource existante. Le filtre (servlet) mappé sur
est la chaîne de filtre a commencé quand pas de servlet ou d'autres non-filtre de ressources est compensée par le chemin? L'web.xml spécifie uniquement à partir d'un écouteur et d'un filtre et rien d'autre.
Certainement. Sinon, basée sur le filtre (MVC) des frameworks comme Spring MVC () ne jamais avoir travaillé.
/hello/world
résoudre en une ressource pour votre serveur? Si pas, il n'y a pas de raison pour commencer une chaîne de filtres.Je suis assez sûr que je suis tombé sur moi-même avant, avec la
/*
modèle ne fonctionne pas. Je ne pense pas que j'ai jamais jamais résolu.la ressource n'a pas nécessairement besoin d'être une physique de la ressource existante. Le filtre (servlet) mappé sur
/*
sera invoqué, de toute façon. Il peut notamment agir comme un contrôleur frontal.est la chaîne de filtre a commencé quand pas de servlet ou d'autres non-filtre de ressources est compensée par le chemin? L'web.xml spécifie uniquement à partir d'un écouteur et d'un filtre et rien d'autre.
Certainement. Sinon, basée sur le filtre (MVC) des frameworks comme Spring MVC () ne jamais avoir travaillé.
OriginalL'auteur e.b.white | 2010-09-07
Vous devez vous connecter pour publier un commentaire.
Le filtre ne sera pas invoquée lorsque l':
La classe de filtre est manquant dans le classpath et/ou n'est pas chargeable ou instanciables. Cependant, tu devrais l'avoir remarqué dans le démarrage du serveur de logs. Solution basée sur l'interprétation des exceptions et des erreurs trouvées dans les journaux du serveur.
Il y a un autre filtre en cours d'exécution avant de la chaîne, ce qui n'est pas l'appel de
FilterChain#doFilter()
, mais plutôtRequestDispatcher#forward()
ouinclude()
qui a par la suite provoqué des filtres dans la chaîne d'être complètement ignorés (quand ils n'écoutent pas surFORWARD
ouINCLUDE
répartiteurs; ils ont, par défaut, n'écoute que surREQUEST
répartiteur). La Solution est soit de réparer le mauvais filtre, ou pour ajouter<dispatcher>FORWARD</dispatcher>
etc en conséquence, ou à réorganiser le filtre déclarations dansweb.xml
de sorte que votre nouveau filtre vient avant l'autre filtre (à votre tour, seulement besoin de s'assurer que votre nouveau filtre à l'aide de laFilterChain#doFilter()
correctement 🙂 ).L'URL de la requête est simplement faux. Vous avez utilisé http://localhost:8080/hello/world. Avec un filtre à l'écoute sur
/*
, cela signifie que la webapp contexte doit être ROOT ou au moins/hello
. Vérifiez votre webapp contexte. Je venais tout juste de réessayer avec une URL qui pointe vers un valide JSP/Servlet à l'intérieur de la même webapp qui génère une non-réponse 404. Le filtre alors appelés ainsi?2. J'ai mis à jour web.xml veuillez vérifier.
J'ai vérifier le détruire() de l'API:Cette méthode n'est appelée qu'une fois tous les threads dans le filtre de la méthode doFilter ont quitté ou après un délai d'expiration est passée. Peut-être que c'est le délai d'attente?
J'ai ajouté un 3ème cause (ce qui est après tout assez évident, mais on ne sait jamais 🙂 ).
Je le pense aussi BalusC. Comme je l'ai dit dans ma réponse, son filtre est probablement sur la mauvaise URL.
OriginalL'auteur BalusC
Ce qui est de la demande web? Pouvez-vous essayer de changer votre url-pattern *.jsp au lieu de /* ? Si vous utilisez autre chose que de la pure JSP puis de le changer pour quelque soit la demande de fin d'extension est (comme pour les entretoises, il est généralement *.n').
OriginalL'auteur CoolBeans