Necesito reenviar mi solicitud (a un jsp pero no creo que sea el asunto) de un http.Filter si el URI de la solicitud original pasa alguna validación que ejecuta mi filtro.Reenviar solicitud de un filtro
yo encontramos este page that faced similar task
Todavía tiene que averiguar lo siguiente:
¿Cómo puedo obtener ServletContext en
doFilter()
método (con el fin de desvío de llamada API)getServletContext()
no se recignized¿Tengo que
call chain.doFilter()
antes del delantero, después del delantero o no? Además, ¿tengo que llamar alchain.doFilter()
si mi validación pasó o solo si falla (porque en este caso no continuaré reenviando mi página)?
Esta pregunta en realidad siguen this thread, a ser más obvio, el código podría ser algo como:
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
if (request instanceof HttpServletRequest) {
HttpServletRequest httpServletRequest = ((HttpServletRequest)request);
String requestURI = httpServletRequest.getRequestURI();
String contextPath = httpServletRequest.getContextPath();
if (<this is my implementation of the validation of this filter>){
getServletContext().getRequestDispatcher(
"MySpecific.jsp").forward(request,response);
}
}
chain.doFilter(request,response);
}
ambas respuestas estaban bien. El otro fue el primero. – Spiderman
Almacene el FilterConfig durante la inicialización y llame a FilterConfig.getServletContext() Este es mi método preferido ya que no tengo una sesión explícitamente: – Gurnard