Java 注销后,当我在浏览器中单击“上一步”按钮时,仍然可以访问页面,同时刷新页面,效果良好

Java 注销后,当我在浏览器中单击“上一步”按钮时,仍然可以访问页面,同时刷新页面,效果良好,java,jsp,session,servlets,Java,Jsp,Session,Servlets,我在jsp和servlet 我正在登录页面,它被重定向到homepage.jsp 在登录中,我在servletlogin.java中设置会话变量,如下所示: HttpSession ss = rq.getSession(true); ss.setAttribute("uid", rstusrdetail.getInt(1)); ss.setAttribute("username", rstusrdetail.getString(2)); try { HttpSessio

我在
jsp
servlet

我正在登录页面,它被重定向到
homepage.jsp

在登录中,我在servlet
login.java
中设置会话变量,如下所示:

HttpSession ss = rq.getSession(true);
ss.setAttribute("uid", rstusrdetail.getInt(1));
ss.setAttribute("username", rstusrdetail.getString(2));
try {
            HttpSession ss = rq.getSession(false);
            if (ss.getAttribute("uid") == null || ss.getAttribute("username") == null ) {
                rs.sendRedirect("/");
            }

            rs.setHeader("Cache-Control", "no-cache, no-store, must-revalidate");
            rs.addHeader("Cache-Control", "post-check=0, pre-check=0");
            rs.setHeader("Pragma", "no-cache");
            rs.setDateHeader("Expires", 0);
            HttpSession session = rq.getSession(false);
            session.setAttribute("uid", null);
            session.setAttribute("username", null);            
            session.invalidate();
            rs.sendRedirect("/");
        } catch (Exception exp) {
            RequestDispatcher dd = rq.getRequestDispatcher("/");
            dd.forward(rq, rs);
        }
我还有一个注销按钮和logout.java,如下所示:

HttpSession ss = rq.getSession(true);
ss.setAttribute("uid", rstusrdetail.getInt(1));
ss.setAttribute("username", rstusrdetail.getString(2));
try {
            HttpSession ss = rq.getSession(false);
            if (ss.getAttribute("uid") == null || ss.getAttribute("username") == null ) {
                rs.sendRedirect("/");
            }

            rs.setHeader("Cache-Control", "no-cache, no-store, must-revalidate");
            rs.addHeader("Cache-Control", "post-check=0, pre-check=0");
            rs.setHeader("Pragma", "no-cache");
            rs.setDateHeader("Expires", 0);
            HttpSession session = rq.getSession(false);
            session.setAttribute("uid", null);
            session.setAttribute("username", null);            
            session.invalidate();
            rs.sendRedirect("/");
        } catch (Exception exp) {
            RequestDispatcher dd = rq.getRequestDispatcher("/");
            dd.forward(rq, rs);
        }
注销后,当我单击“上一步”按钮时,它被重定向到homepage.jsp

如果我刷新,则会收到会话过期消息。如果我直接访问该页面,我也会收到会话过期消息


如何单击“上一步”按钮使会话在不刷新的情况下过期,或者是否有任何方法禁用浏览器中的“上一步”按钮?

在每个需要登录的页面顶部添加了以下代码:

HttpServletResponse httpResponse = (HttpServletResponse)response;

httpResponse.setHeader("Cache-Control","no-cache, no-store, must-revalidate"); 
response.addHeader("Cache-Control", "post-check=0, pre-check=0");
httpResponse.setHeader("Pragma","no-cache"); 
httpResponse.setDateHeader ("Expires", 0); 
if (session.getAttribute("uid") == null || session.getAttribute("username") == null ) {                               
                 response.sendRedirect("/invalidSession.jsp");
                 return;
 }

检查。解释得很好。@uuiui我也用同样的方法。你可以查看我上面的代码。我的问题是为什么我要按“返回页面”按钮?@Santhucool上面的代码并没有表明你也在遵循那篇文章关于禁用所有敏感页面缓存的建议(不仅仅是在注销时)。好的,bussy让我试试!!谢谢老兄,我添加了一些行,解决了我的问题!!