j'ai fait un filtre qui est responsable de l'ajout .do
aux demandes et est le premier filtre a déclaré:Filtre & RequestDispatcher pour modifier l'effet d'URL sur les filtres existants
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
if(! (request instanceof HttpServletRequest)){
chain.doFilter(request, response);
}
HttpServletRequest httpServletRequest = (HttpServletRequest) request;
String requestUrl = httpServletRequest.getServletPath();
if(!isBetaPathRequest(httpServletRequest) || StringUtils.contains(requestUrl,".")){
chain.doFilter(request, response);
return;
}
String newUrl = requestUrl;
int lastIndexOf = requestUrl.lastIndexOf("?");
if(lastIndexOf == -1){
if(requestUrl.charAt(requestUrl.length()-1) != '/'){
newUrl = newUrl.concat(".do");
}
}
else{
newUrl = requestUrl.substring(0, lastIndexOf-1) .concat(".do") .concat(requestUrl.substring(lastIndexOf));
}
final RequestDispatcher rq = getRequestDispatcher(request, newUrl);
rq.forward(request, response);
}
Il existe d'autres différents filtres également déclarés dans le projet web.xml
et je notifie avec le débogueur qu'ils ne sont pas en cours d'exécution.
La cartographie actuelle pour un filtre important est par exemple:
ContentResponseCachingFilter * .do
Mais la requête entrante initiale ne comprend pas .do
dans le URl jusqu'à ce qu'elle passe à travers le BetaRewriteUrlFilter
. Lorsque RequestDispatcher.forward est appelé, les filtres sont-ils appliqués ou faut-il les caler manuellement ou utiliser à la place une redirection 302 ???