我需要在tomcat會話超時後爲用戶提供錯誤頁面。所以處理這個是創建一個過濾器,並添加了一些邏輯來檢測這個,然後我說去錯誤頁面。如何使頁面在tomcat會話超時後加載錯誤頁面?
public void doFilter(ServletRequest arg0, ServletResponse arg1,
FilterChain chain) throws IOException, ServletException {
M_log.debug("startFilter");
HttpServletRequest request=(HttpServletRequest)arg0;
HttpServletResponse response=(HttpServletResponse)arg1;
String title = request.getParameter("context_title");
TcSessionData tcSession = (TcSessionData) request.getSession.getAttribute("TcSessionData");
if((title!=null && tcSession==null) || (title==null && tcSession!=null)){
chain.doFilter(request, response);
}else if(title==null && tcSession==null) {
//response.sendRedirect("/error/error.jsp");
request.getRequestDispatcher("/error/error.jsp").forward(request, response);
}
}
後會話超時,我看到它是怎麼回事,「如果」邏輯權利,它不轉發/重定向到我的error.jsp文件。它給出了一個404錯誤。我嘗試了頁面的重定向和轉發,但都沒有成功。我厭倦了error.jsp頁面的絕對路徑和相對路徑,但我仍然看到404錯誤,說它無法找到error.jsp頁面。我也試過把error.jsp各個位置放在webapps
目錄下還是沒有運氣
我的應用程序只有一個叫做root.jsp的頁面。當會話超時時,應用程序將始終爲root.jsp,並在超時後寫入到error.jsp。
這裏是我的web.xml
<filter>
<filter-name>CheckSessionExpirationFilter</filter-name>
<filter-class>lti.google.CheckSessionExpirationFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>CheckSessionExpirationFilter</filter-name>
<servlet-name>GoogleDriveLti</servlet-name>
</filter-mapping>
<servlet>
<servlet-name>GoogleDriveLti</servlet-name>
<servlet-class>lti.google.GoogleLtiServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>GoogleDriveLti</servlet-name>
<url-pattern>/service/*</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>1</session-timeout> <!-- in minutes -->
</session-config>
這裏是我的文件夾結構
根應用程序進入下'web應用/不ROOT' webapps下右。您不應該在webapps下擁有WEB-INF權限。 – developerwjk
使用response.sendRedirect(「/ error/error.jsp」);併發布您的地址欄完整的URL – Tusar
@Tusar:這是URL。 HTTP://本地主機:8080 /谷歌驅動LTI /服務。我正在使用response.sendRedirect(「/ error/error.jsp」);但仍然沒有運氣 – pushya