was*_*lli 49 java redirect servlets servlet-filters
我正在尝试找到一种方法将我的请求从过滤器重定向到登录页面,但我不知道如何从servlet重定向.我搜索但我发现的是sendRedirect()
方法.我无法在过滤器中找到我的响应对象.原因是什么?我怎么解决这个问题?
Dea*_*mer 73
在Filter中,响应是ServletResponse
而不是HttpServletResponse
.Hence执行转换HttpServletResponse
.
HttpServletResponse httpResponse = (HttpServletResponse) response;
httpResponse.sendRedirect("/login.jsp");
Run Code Online (Sandbox Code Playgroud)
如果使用上下文路径:
httpResponse.sendRedirect(req.getContextPath() + "/login.jsp");
Run Code Online (Sandbox Code Playgroud)
也不要忘记return;
最后打电话.
我正在尝试找到一种方法将我的请求从过滤器重定向到登录页面
别
你只是调用
chain.doFilter(request, response);
Run Code Online (Sandbox Code Playgroud)
从过滤器和正常流程将继续.
我不知道如何从servlet重定向
您可以使用
response.sendRedirect(url);
Run Code Online (Sandbox Code Playgroud)
从servlet重定向
如果你还想保留hash和get参数,你可以这样做(在filter init处填充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);
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
95697 次 |
最近记录: |