我的 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");
}
}
}
最佳答案
WEB-INF 下的所有内容都是故意无法从外部访问的。把它放在任何你喜欢的地方,除非你想从浏览器访问它。
JSP 通常放在 WEB-INF 下,因为 JSP 是 View ,请求应该始终发送到准备模型并分派(dispatch)到 View 的 Controller 。
关于SendRedirect 后未找到 JSP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35636386/