我需要在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