que filtros filtro example java servlets redirect servlet-filters

java - filtros - ¿Cómo redirigir en un filtro de servlet?



filtros en java netbeans (5)

Estoy intentando encontrar un método para redirigir mi solicitud desde el filtro a la página de inicio de sesión

No lo hagas

Usted acaba de invocar

chain.doFilter(request, response);

del filtro y el flujo normal continuará.

No sé cómo redirigir desde servlet

Puedes usar

response.sendRedirect(url);

redirigir desde servlet

Estoy tratando de encontrar un método para redirigir mi solicitud desde el filtro a la página de inicio de sesión, pero no sé cómo redireccionar desde servlet. Busqué, pero lo que encuentro es el método sendRedirect() . No puedo encontrar este método en mi respuesta en filtro. ¿Cuál es la causa? ¿Como puedo resolver esto?


En Filter, la respuesta es de ServletResponse lugar de HttpServletResponse .Hace el lanzamiento a HttpServletResponse .

HttpServletResponse httpResponse = (HttpServletResponse) response; httpResponse.sendRedirect("/login.jsp");

Si usa una ruta de contexto:

httpResponse.sendRedirect(req.getContextPath() + "/login.jsp");

Tampoco te olvides de llamar a la return; al final.


Pruebe y compruebe que su ServletResponse response es una instanceof HttpServletResponse como esta:

if (response instanceof HttpServletResponse) { response.sendRedirect(....); }


Si también quieres mantener hash y obtener un parámetro, puedes hacer algo como esto (completar redirectMap en filter init):

String uri = request.getRequestURI(); String[] uriParts = uri.split("[#?]"); String path = uriParts[0]; String rest = uri.substring(uriParts[0].length()); if(redirectMap.containsKey(path)) { response.sendRedirect(redirectMap.get(path) + rest); } else { chain.doFilter(request, response); }


Su objeto de respuesta se declara como ServletResponse . Para usar el método sendRedirect() , debe convertirlo a HttpServletResponse . Esta es una interfaz extendida que agrega métodos relacionados con el protocolo HTTP.