ich einen Filter gemacht haben zu ändern, die für das Hinzufügen von .do
auf Anfragen zuständig ist, und ist das erste erklärt Filter:Filter & Request URL Auswirkungen auf bestehende Filter
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);
}
Es gibt verschiedene andere Filter auch im Projekt deklariert web.xml
Datei und ich notificing mit dem Debugger, dass sie nicht ausgeführt werden.
Die aktuelle Zuordnung für einen wichtigen Filter ist zum Beispiel:
ContentResponseCachingFilter * .do
Aber die anfängliche eingehende Anforderung keine .do
in der URL, bis sie durch die BetaRewriteUrlFilter
weitergegeben.
Wenn RequestDispatcher.forward aufgerufen wird, werden die Filter angewendet oder müssen wir sie manuell calieren oder stattdessen eine 302-Weiterleitung verwenden ???