点浏览器上的回退,到原来的画面是正常的,
可你要是用session判断,
就算退到原来的页面,画面应该不能操作了吧,
一操作就可以根据有无session存在来迁移到登录画面。

解决方案 »

  1.   

    可是像CSDN啊,淘宝啊,一旦退出返回的都是登录画面,,不是页面已过期貌似,想知道下具体怎么做,还有就是我是用FORM属性来传递页面和后台的参数的,不是像INPUT那种控件写name,在后台用接受参数的方式传递的,也可以用注销session的方式来做注销功能么
      

  2.   

    看下我的博客中关于session注销的问题就解决了,可以增加一个按钮,作为退出按钮,点击时触发一个事件,在事件里把session注销,这样再返回时就重定向到登录界面了,那篇博客中有具体代码,这里就不贴代码了
      

  3.   

    HttpSession session = request.getSession(false);  
    session.invalidate();  
    response.setHeader("Pragma", "No-cache");  
    response.setHeader("Cache-Control", "no-cache");  
    response.setDateHeader("Expires", 0);  
    // 跳转到初始登录界面  
    response.sendRedirect("login.jsp");   
    这段代码卸载退出按钮触发的那个action里么,现在我在action是这样写的
    @Override
    public ActionForward execute(ActionMapping mapping, ActionForm form,
    HttpServletRequest request, HttpServletResponse response)
    throws Exception {
    request.getSession().invalidate();
    return mapping.findForward("success");


    }
    能说的详细点么,一直做的都是登录,没接触过注销,先谢谢了
      

  4.   

    点击注销,进入action清空Session,跳转到login.jsp
    Clear.Session();
      

  5.   

    浏览器的后退退回到原来的页面是正常的,如果你不想要原来的页面,可用ajax实现提交,还有在每个提交的action都判断一下当前session是否失效,来决定跳转与否
      

  6.   

    还没有,,试了好多都弄不出想CSDN这种效果
      

  7.   

    登录成功后的页面,可以判断session是否有效,无效就返回login.jsp 
    点击注销 就在action里面 session.invalidate();
    然后跳转jsp页面
      

  8.   

    这个是我写的注销的action
    public ActionForward execute(ActionMapping mapping, ActionForm form,
    HttpServletRequest request, HttpServletResponse response)
    throws Exception {
    request.getSession().invalidate();
    HttpSession session = request.getSession(false);  
    session.invalidate();  
    response.setHeader("Pragma", "No-cache");  
    response.setHeader("Cache-Control", "no-cache");  
    response.setDateHeader("Expires", 0);  
    // 跳转到初始登录界面  
    response.sendRedirect("login.jsp");   
    return mapping.findForward("success");
    }
    是这样覆盖方法,还是自己写一个构造函数
      

  9.   

    public ActionForward execute(ActionMapping mapping, ActionForm form,
    HttpServletRequest request, HttpServletResponse response)
    throws Exception {

    HttpSession session = request.getSession(false);   
    request.getSession().invalidate();
    response.setHeader("Pragma", "No-cache");   
    response.setHeader("Cache-Control", "no-cache");   
    response.setDateHeader("Expires", 0); 
    // 跳转到初始登录界面   
    if(session==null||session.equals(""))
    {
      return mapping.findForward("success"); 
    } return mapping.findForward("success");  
    }
    这样写可以么
      

  10.   

    现在这样写的
    public ActionForward execute(ActionMapping mapping, ActionForm form,
    HttpServletRequest request, HttpServletResponse response)
    throws Exception {

    HttpSession session = request.getSession(false);
    session.removeAttribute("perEmail");
    request.getSession().invalidate();
    // 跳转到初始登录界面   
    if(request.getSession(false)==null)
    {
      return mapping.findForward("self"); 
    } return mapping.findForward("success");  
    }
    跳转的时候是跳转到self了,但回退还是一样session.removeAttribute("perEmail");这里的perEmail是FORM里面设置的属性
    在登录的action里
    response.setHeader("Pragma", "No-cache");  
    response.setHeader("Cache-Control", "no-cache");  
    response.setDateHeader("Expires", 0);  
      

  11.   

    还有,我想问下,用struts框架的时候,struts框架是不是在验证用户通过的时候会自动的生成一个session,也就是说,虽然我们没有去设置这个session,但框架是自己生成这个session的
      

  12.   

    不是的,只有自己存进session,才会在存在session中的
      

  13.   

    判断用户信息正确,注入session这样对么
    HttpSession session = request.getSession();
    session.setAttribute("customerInfo", vmform.getPerEmail()); 
    然后这个session进去的信息只要不注销,后台都能取到?
      

  14.   

    我在登录成功后设入session,然后在退出的action中
    vmtaForm vmform=(vmtaForm)form;
    HttpSession session = request.getSession();
    String a=(String)session.getAttribute("customerInfo");
    System.out.printf("这个是为注销前的session"+a);
    session.removeAttribute(vmform.getPerEmail());
    request.getSession().invalidate();
    String b=(String)session.getAttribute("customerInfo");
    System.out.printf("这个是为注销后的session"+b);
    // 跳转到初始登录界面   
    if(request.getSession(false)==null)
    {
      return mapping.findForward("success"); 
    }
    return null;
    一开始可以打印出刚开始设入的值,也就是说session确实存在于整个会话中,当我用
    session.removeAttribute(vmform.getPerEmail());
    request.getSession().invalidate();
    后,不能打印出值,页面提示Session already invalidated
    已经注销,这样子的退出算已经注销了么,回退还有作用么,求解答
      

  15.   

    我点退出,进入退出的action,打印出了用户的用户名,然后在浏览器中点回退,又回到了登录后的画面,此时再点退出,打印出session已经为空
    这个是为注销前的session:*********@qq.com这个是为注销前的session:null
    回退后再点退出,不能打印出session,是不是说明已经注销了,不会造成那种用户还处在登录状态
      

  16.   

    注销session
    然后做一个过滤器  当session为空的情况下自动跳转登录页面
      

  17.   

    点击退出后走的是退出的action是forward到登录画面的,但是有一个问题就是用户可以点击浏览器的回退按钮,又回到了第一次登录成功的画面,做不出像CSDN这种一旦点注销,就算你回退也是回到登录画面
      

  18.   


    你做一个过滤器呢?
    判断session是否存在,如果不存在  自动跳转到登录页面
      

  19.   

    过滤器,是指spring security这种么,还是写一个.java文件,凡遇到session为空的时候,都让他返回登录画面,这个需要在struts-config.xml中配置么
      

  20.   


    可以写一个.java文件  遇到session为空的时候返回登录画面,
    然后在web.xml文件内加载这个文件
      

  21.   

    session清楚直接跳转到EXIT页面
    <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%><html>
      <head>  </head>
      
      <body>
       <%
       session.invalidate();
       response.sendRedirect("login.jsp");
        %>
      </body>
    </html>
      

  22.   

    这个需要登录Session机制的配合,每次用户访问特殊页面,都需要查看Session,看用户是否已经登录。如果发现还未登录,则进行页面的重定向,redirect到登录页面,让用户进行登录。注销以后,session为空,再次访问这些页面,就自动判断未登录,也就跑到登录界面了。
      

  23.   

    我是感觉做过滤器的方法应该可以实现这个功能,不过现在没有用这个做,而是直接在注销session后跳转登录界面,在jsp页面上阻止用户使用回退按钮,无论怎么回退都跳转同指定页面
      

  24.   

    logout之后可以跳转到你登录成功后的页面,应为你在登录成功后的页面已经有sessionCheck。一但跳到这个页面会自动跳转到登录页面,并且没法返回了……。我就这么做的
      

  25.   

    今天也在弄这个,网上看了很多,感觉最快捷方便的就是用
    js在登入后的主页加  location.replace("outLogon"); //outLogon即是你所要转的退出登录的Action地址
    具体参考
    http://www.thinksaas.cn/group/topic/322806/
    http://llyzq.iteye.com/blog/1042816