Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 阻止用户在会话关闭后返回_Java_Jsp_Struts - Fatal编程技术网

Java 阻止用户在会话关闭后返回

Java 阻止用户在会话关闭后返回,java,jsp,struts,Java,Jsp,Struts,我试图阻止用户在会话关闭后返回。但它不起作用。有人建议我怎么做吗 在注销操作类中,我编写了以下代码 response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // HTTP 1.1. response.setHeader("Pragma", "no-cache"); // HTTP 1.0. response.setDateHead

我试图阻止用户在会话关闭后返回。但它不起作用。有人建议我怎么做吗

在注销操作类中,我编写了以下代码

            response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // HTTP 1.1.
            response.setHeader("Pragma", "no-cache"); // HTTP 1.0.
            response.setDateHeader("Expires", 0);
            mySession.removeAttribute("user_id");
            mySession.invalidate();

            return mapping.findForward(SUCCESS);
所以它将用户重定向到索引页。当我按下后退按钮时,它会返回,用户可以看到所有已经访问过的页面

如何预防这种情况

在每个jsp页面中,我都是这样尝试的

       if (session.getAttribute("user_id") == null || session.getAttribute("user_id").equals(""))
          {
                  response.sendRedirect("index.do");
           }            
           else
        {
             .........
        }

即使我无法阻止用户返回。当任何用户执行任何操作时,只有用户重定向到索引。帮帮我。

更好的解决方案是使用过滤器,即处理应用程序的每个请求

验证用户会话使用筛选器的示例

public void doFilter(final ServletRequest request, final ServletResponse res, final FilterChain chain) throws IOException, ServletException {
        HttpServletRequest req = (HttpServletRequest) request;

        if (req.getSession().getAttribute("user_id") == null || req.getSession().getAttribute("user_id").equals("")) {
            HttpServletResponse response = (HttpServletResponse) res;
            response.addHeader("Location", "/SessionTimeoutAction.do");
            response.sendError(HttpServletResponse.SC_TEMPORARY_REDIRECT);
        }


        chain.doFilter(request, res);
    }