我的JSP位置是src/webcontent/WEB-INF/jsp/sessionTimeout.jsp。SendRedirect後未找到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");
}
}
}
對不起,我一開始並不清楚。我們的結構是src/webcontent/WEB-INF/...,所以我相信應該找到它。我編輯了原文。我有一個解決方案,出於某種原因,而這一個沒有,見下面我的答案。 –
Web內容在您的源項目中構成Web應用程序的根目錄。您的解決方案可以工作,因爲它將當前請求分發(轉發)到JSP。重定向與前向完全不同:它要求瀏覽器向JSP發送新請求。由於它無法從外部訪問,因此失敗。 –
那麼爲什麼所有關於此主題的示例都給出sendRedirect(「/ page.jsp」),其中每個人都將其JSP放置在通常不可訪問的WEB-INF位置?我已經看到了數以千計的sendRedirect示例,根本不會這麼做。 –