我试图找到一种方法来重定向我的请求从过滤器登录页面,但我不知道如何从servlet重定向。我搜查,但我发现是sendRedirect()
方法。我无法在过滤器中找到此方法。原因是什么?我该如何解决这个问题?如何在servlet过滤器中重定向?
回答
在过滤器的响应将是ServletResponse
而非HttpServletResponse
。因此做演员到HttpServletResponse
。
HttpServletResponse httpResponse = (HttpServletResponse) response;
httpResponse.sendRedirect("/login.jsp");
如果使用上下文路径:
httpResponse.sendRedirect(req.getContextPath() + "/login.jsp");
而且不要忘记在最后调用return;
。
尝试和你的ServletResponse response
的检查是instanceof HttpServletResponse
就像这样:
if (response instanceof HttpServletResponse) {
response.sendRedirect(....);
}
没有必要作为过滤方法是'公共无效的doFilter(HttpServletRequest的请求, \t \t \t HttpServletResponse的响应,FilterChain链) \t \t \t抛出IOException异常,的ServletException {' – 2015-06-11 10:59:34
@ToKra这不是方法的签名,并导致编译错误。 – 2018-03-07 00:34:26
您的响应对象被声明为ServletResponse
。要使用sendRedirect()
方法,您必须将其投射到HttpServletResponse
。这是一个扩展的接口,添加了与HTTP协议相关的方法。
过滤器方法已经有一个'公共无效的doFilter(HttpServletRequest的请求, \t \t \t HttpServletResponse的响应,FilterChain链) \t \t \t抛出IOException异常,ServletException异常{' – 2015-06-11 11:00:08
我试图找到一种方法,以我的请求,从过滤器重定向到登录页面
不要
你刚才援引
chain.doFilter(request, response);
从过滤器和正常流量将继续。
我不知道如何从servlet的重定向
您可以使用
response.sendRedirect(url);
从servlet的重定向
如果你也想保持哈希并获得参数,你可以做这样的事情(在过滤器初始化填写redirectMap):
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);
}
- 1. Servlet过滤器重写URL
- 2. Servlet过滤器重定向,网址未更改
- 3. 了解Servlet过滤器重定向行为
- 4. 如何保留从servlet过滤器执行HTTP重定向的请求正文
- 5. 通过servlet重定向JSP
- 6. 如何servlet请求重定向到一个HTML页面中过滤
- 7. 更改servlet标题并重定向到过滤器中的其他url
- 8. Servlet +重定向
- 9. 过滤器的servlet在NetBeans
- 10. Servlet vs过滤器
- 11. 从异常过滤器重定向
- 12. 会话过滤器重定向问题
- 13. ISAPI重定向3过滤器301重定向与子域
- 14. servlet过滤器映射重叠
- 15. Servlet过滤混乱,响应重定向没有发生
- 16. Servlet-Servlet-Jsp重定向
- 17. 从servlet重定向到servlet
- 18. Servlet过滤器 - 不要将过滤器应用于特定的过滤器
- 19. JRuby Rack - 如何添加servlet过滤器?
- 20. 如何通过servlet的动作重定向功能在javascript
- 21. 如何在Grails中重用过滤器
- 22. 在servlet过滤器中向请求添加HTTP标头
- 23. 在Servlet过滤器中请求null null
- 24. 在过滤器servlet中写入文件
- 25. 在Servlet过滤器中注入弹簧
- 26. servlet过滤器在JSP中不工作
- 27. 过滤器重定向到login.jsp之后,正确的servlet不会被调用
- 28. 如何让过滤器重定向到另一个动作?
- 29. 如何重定向我的行动过滤器类retrn视图
- 30. 过滤器在无限重定向循环中运行
是否有来解决使用一个ViewResolver的过滤器的内侧的JSP路径的方法吗? – FelipeKunzler 2016-03-03 23:20:53
只有在请求来自浏览器时才有效。这是外部重定向。 – 2017-07-22 18:56:12