Die Logik ist, dass der Filter getroffen wird, ist die Bedingung nicht wahr, so dass es durch die Filterkette geht. Nachdem die Antwort festgeschrieben wurde, wird der Filter ausgelöst, und die Bedingung ist nun wahr (ein Anforderungsattribut wurde festgelegt). Es geht um den Forward auszuführen, aber die Seite wird nie weitergeleitet. Ich weiß, dass das etwas damit zu tun hat, dass die Antwort festgeschrieben wird, weil ich verschiedene Logik getestet habe, wo sie weitergeleitet wird, bevor sie zum ersten Mal die Kette trifft, und sie wird erfolgreich weitergeleitet.Ist es möglich, einen Servlet-Filter weiterzuleiten oder umzuleiten, nachdem die Antwort festgeschrieben wurde?
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
HttpServletRequest httpServletRequest = (HttpServletRequest)request;
if (some condition equals true) {
httpServletRequest.getRequestDispatcher("/home.jsp").forward(request, response);
return;
} else {
chain.doFilter(request, response);
}
}
Beispiel aus meinem Deployment Descriptor:
<filter>
<filter-name>MyFilter</filter-name>
<filter-class>com.filters.MyFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>MyFilter</filter-name>
<url-pattern>*.jsp</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
</filter-mapping>
Könnten Sie bitte einen 'Beispielcode' basierend auf dem oben gewünschten'/home.jsp'-Redirect bereitstellen? Ich habe auch Probleme mit diesem Problem. Vielen Dank! – DougA
@DougA Überprüfen Sie die Änderungen in meiner Antwort. Das sollte zusammenfassen, was zu tun ist. – shams