我的JSP的位置是 src / webcontent / WEB-INF / jsp / sessionTimeout.jsp 。
我从过滤器执行如下所示的sendRedirect后找不到。我已经尝试过这些组合:
((HttpServletResponse)response).sendRedirect("/WEB-INF/jsp/sessionTimeout.jsp");
((HttpServletResponse)response).sendRedirect("sessionTimeout.jsp");
((HttpServletResponse)response).sendRedirect("jsp/sessionTimeout.jsp");
((HttpServletResponse)response).sendRedirect(((HttpServletRequest)request).getContextPath() + "/jsp/sessionTimeout.jsp");
404错误。代码:
public class SpringMVCControllerFilter implements Filter
{
@Override
public void destroy() {
// TODO Auto-generated method stub
}
@Override
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException
{
if (session.isValid() && !session.isNew())
{
chain.doFilter(request, response);
}
else
{ ((HttpServletResponse)response).sendRedirect("jsp/sessionTimeout.jsp");
}
}
}
答案 0 :(得分:1)
WEB-INF下的所有内容都是故意无法从外部访问的。如果您想从浏览器访问它,请将它放在您喜欢的任何地方。
JSP通常放在WEB-INF下,因为JSP是视图,请求应始终转到准备模型并调度到视图的控制器。
答案 1 :(得分:1)
这最终对我有用:
request.getRequestDispatcher("/WEB-INF/jsp/sessionTimeout.jsp").forward(request, response);
虽然原始帖子没有,但下面的组合都没有工作(sendRedirect没有):
((HttpServletResponse)response).sendRedirect("/WEB-INF/jsp/sessionTimeout.jsp");
((HttpServletResponse)response).sendRedirect("sessionTimeout.jsp");
((HttpServletResponse)response).sendRedirect("jsp/sessionTimeout.jsp");
我将使用RequestDispatcher,但仍然不确定为什么sendRedirect总是无法重定向到JSP。