La lógica es que el filtro recibe un golpe, la condición no es verdadera, por lo que pasa por la cadena de filtro. Después de confirmar la respuesta, el filtro recibe un golpe, y la condición ahora es verdadera (se estableció un atributo de solicitud). Entra para ejecutar el reenvío, pero la página nunca avanza. Sé que esto tiene algo que ver con la respuesta que se está cometiendo porque probé una lógica diferente en la que avanza antes de que llegue a la cadena por primera vez, y avanza con éxito.¿Es posible reenviar o redireccionar desde un filtro de servlet después de que se haya confirmado la respuesta?
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);
}
}
ejemplo de mi descriptor de despliegue:
<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>
¿Podría proporcionar algún 'código de muestra' basado en el redireccionamiento'/home.jsp' deseado anteriormente? También estoy teniendo problemas con este problema. ¡Gracias! – DougA
@DougA revisa las ediciones en mi respuesta. Eso debería resumir lo que se necesita hacer. – shams