我的身份验证过滤器出现问题。当过滤器重定向到登录页面时,登录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:
<img src="images/logo.png" />
jsp是“正常”,所有必需的HTML标记都存在。 “images”文件夹位于项目的默认“web”文件夹中,与所有其他jsp和javascripts一起。
提前感谢您的帮助。 :)
- Stian
答案 0 :(得分:7)
这是因为相对路径。
Login
位于上下文的根目录/views/images/
因此,当您转发时,会在/images
(因为它们相对于当前地址)而非/views/images/
如何解决它。两个选项:
更新: 确保图像不受过滤器影响。两个选项:
request.getRequestURI()
答案 1 :(得分:2)
是否您的过滤器也应用于图片请求,并将logo.png
的请求重定向到login.jsp
?
如果是这样,您可以调整filter-mapping
中的web.xml
。