当前位置: 首页 > 知识库问答 >
问题:

如何使页面在tomcat会话超时后加载错误页?

严嘉良
2023-03-14

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


}

在会话超时之后,我看到它将纠正“if”逻辑,并且它不会转发/重定向到我的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>

下面是我的文件夹结构

共有1个答案

夏侯林
2023-03-14
localhost:8080/error/error.jsp

在这里,您可以看到上下文名称不存在于URL中。

尝试(删除“/”)

 getServletContext().getRequestDispatcher("/error/error.jsp").forward(request, response);

getServletContext().getRequestDispatcher("error/error.jsp").forward(request, response);
 类似资料:
  • 我正在使用Selenium.WaitForPageToload方法在启用ajax的网页中等待。当我运行测试代码时,selenium甚至在页面加载后仍会等待,并抛出“等待操作完成超时”异常。我可能在甚至没有页面加载事件的地方使用了waitforpagetoload。我想它只是跳过部分,如果页面加载。我的代码是这样的 我使用的是Selenium-Java2.33版。google Chrome 27.0

  • 这是我的网站。xml文件,它位于WEB-INF/lib中。它指定会话超时为1分钟,但不会在活动1分钟后将用户超时。

  • 我使用的是和和。一切都很好,但是当会话超时的时候,我会得到以下错误”,因为我已经在布局的main.gsp文件中调用了session变量。现在,我希望在每次会话超时后重定向到登录页面,并且不显示错误页面。要在会话超时后重定向,我已经在文件中这样做了 但是有这么多页,所以很难写每一页。还有其他的方法做这件事吗?请帮忙。

  • 我有一个Web应用程序,它的web.xml超时为1分钟,但它从未超时过这个值。它对其他值(如5,9,10或25分钟)超时,但从未超时1分钟。这是Tomcat 8的最小会话超时限制吗?

  • 我正在使用Selenium2.20WebDriver用C#创建和管理一个firefox浏览器。要访问页面,我使用以下代码,在访问URL之前设置驱动超时: 问题是,有时加载页面需要花费很长时间,使用selenium WebDriver加载页面的默认超时时间似乎是30秒,这太长了。并且我认为我设置的超时不适用于使用GoToUrl()方法加载页面。 所以我试图弄清楚如何设置页面加载的超时,然而,我找不到

  • 我试图从一个网页中以乐透模拟机的形式接收一组数字。我运行服务器,通过浏览器中的本地主机打开页面,输入数字并提交,但下一页上没有显示任何内容,甚至没有404错误。可能是地图问题,但我迷路了。有什么想法吗? 我otto.class 指数html 网状物xml 这三个文件具有以下目录: 大乐透WEB-Lotto\WEB-classes\tomcat.5\webcat.5。班 index.htmlZ:\a