Java Servlet Filter重定向问题
我的身份validationfilter出了问题。 当筛选器重定向到登录页面时,登录JSP中不会显示任何图像。 但是,如果我在登录后手动进入登录页面,则会显示图像。
我不明白为什么会这样! 我感谢任何帮助。 🙂
AuthFilter筛选:
if (authorized == null && path.indexOf("Auth") == -1 && path.indexOf("Login") == -1 ) { httpResponse.sendRedirect("Login"); return; } else { chain.doFilter(request, response); }
登录servlet:
// Just using a servlet in case I want more data sent to the jsp Dispatcher.dispatch("views/login.jsp", request, response);
login.jsp的:
jsp在其他方面是“正常的”,所有必需的HTML标记都存在。 “images”文件夹位于项目的默认“web”文件夹中,与所有其他jsp和javascripts一起。
在此先感谢您的帮助。 🙂
– Stian
这是因为相对路径。
- 您的
Login
位于上下文的根目录中 - 你的图片可能是
/views/images/
- 转发时,浏览器只知道请求的URL。
因此,当你前进时,图像是在/images
(因为它们是相对于当前地址)而不是/views/images/
如何解决它。 两种选择:
- 不要从你的servlet转发; 改为重定向
- 不要从filter重定向到servlet; 直接重定向到登录页面
更新:确保图像不受filter影响。 两种选择:
- 它们不应与filter模式匹配
- filter中不应该对.png,.jpeg,.css等进行重定向。 用
request.getRequestURI()
检查这个
可能是您的filter也应用于图像请求并将logo.png
请求重定向到login.jsp
?
如果是这样,您可以在web.xml
调整filter-mapping
。