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