我想知道我在登陆进去以后Session一直保存登陆用户的会话信息。。
然后再进行一些操作的时候(比如说填写表单的时候)
我退出登陆..或者后台的服务器重新启动了。。所以我Session没有了
又返回到了登陆界面。。
但是我登陆以后又想返回到刚才填写表单的那个界面不知道有什么办法可以做到吗?比如就像CSDN这样。。我没有登陆之前到了下载页面。。然后我登陆以后还是直接到了这个页面

解决方案 »

  1.   

    有一个方法 可以获得访问本页之前的网址,即本页是从哪个页面进来的,你可以找下 api
      

  2.   

    在jsp页面中得到请求页面的url
     String reqUrl = request.getHeader("referer");你看下这个方法http://icarusliu.javaeye.com/blog/250189
      

  3.   

    方法
    1、一般需要这样功能的 如下:下载页、上传页、频道页、栏木页。当用户点击进入的时候将这些URL信息找个地方存起来。
    如:COOKIE,OSCASCH等等。用户操作成功时这些记录清除掉,操作失败时就可以直接读取。
    2、将用户操作信息和URL地址写到缓存中,给予一定的时间限制。过期不给予处理。流程:
    用户--->功能页(给予URL保存)-->1、用户操作成功(给予URL清除)
                                2、用户session失效(不给予处理)
                
    用户--->登陆--->读取相关信息(从cookie或者其它容器中)-->跳转相关页面。
      

  4.   

    对于未登录被拦截跳到登录页面这种情况,可以存下登录前url,登录后跳转到此url
    对于后台服务重启这种情况,要配合session文件实现了
      

  5.   

    嗯。。可能我没说明白。。我的意思是。。我本来登陆进去。。进入的是一个List页面然后我点击到添加的表单页面去了。。
    这个时候如果我点退出。。或者服务器出问题了。。后台关闭了。。等好了的时候
    Session没有了对吧?我又重新回到了登陆界面
    这个时候我要求是。。我登陆进去的时候。。还是返回刚才我填写表单的那个页面。。
    而不是登陆进去默认的List那个页面了。。这样说可以明白吗?
      

  6.   

    如果按照你的意思做的话:
    是用户每次操作会记录下来。
    当退出时保存用户最后一次访问的页面,
    再次登录时自动转到最后访问的页面。
    那你就在session里加东西嘛!再访问就自动转向嘛! 
    用cookie把sessionid写过去嘛!同一用户就转,不同就新建。。 java 高级群:80769367   欢迎您!
    java 高级群:80769367   欢迎您!
    java 高级群:80769367   欢迎您!
    java 高级群:80769367   欢迎您!
    java 高级群:80769367   欢迎您!
    java 高级群:80769367   欢迎您!
    java 高级群:80769367   欢迎您!
    java 高级群:80769367   欢迎您!
    java 高级群:80769367   欢迎您!
    java 高级群:80769367   欢迎您!
    java 高级群:80769367   欢迎您!
      

  7.   

    我不是每次都要保存这种状态。。
    我说了是类似于操作失败这样的情况下了。。
    Session已经无效了。。不能保存在Session中。。所以
      

  8.   

    保存到cookie/或本地文件中,你根据你要返回的页面进行判断啊。例如:你添加表单时,如果点退出或者服务器异常关闭,需要返回的。那么你在点击添加表单这个页面时,将该地址保存到cookie或本地文件中。这里会存在一个问题,那就是每次登陆的时候必须去检查cookie或本地文件,你最好在添加地址的时候,顺便加个有效时间。超过这个时间就不跳转了,没超过时间的就跳转。
      

  9.   

    request好象能获取到上一个页面.
      

  10.   

    就是不知道触发什么的情况才应该去保存cookie。。
    比如想服务器异常这样的话-。-
    我也捕获不到。。
    但是也不能时刻都保存cookie。
      

  11.   

    可以先得到表单页面的url,登陆之后重定向到这个表单页面。    String url = request.getScheme()+"://"+request.getServerName()+":";
        url += request.getServerPort()+request.getContextPath()+request.getQueryString();
        response.sendRedirect("login.jsp");
    javascript里的history.back();好像也可以实现。
      

  12.   

    将上一次的操作信息保存到本地cookie中,下次登录的时候再从cookie中,读取出来。
      

  13.   

    -.-...越彻越远了
    我说了是要服务器timeout的时候。如果timeout。。我session自动失效拉。。回到了登陆页面。。哪能用后退按钮那种东西。。服务器timeout以后除了cookie还有别的办法保存到上次的页面信息吗?
      

  14.   

    .. http协议 本来就是无状态的,如果你非要来个有状态的话,只能在 filter 中加入然后再写到数据库或者文件中了
    但这样性能消耗很大
      

  15.   

    不管session中有没有值,直接转到填表的页面不就可以了啊
      

  16.   

    1. 如果你退出登录  理论上说服务器 没有东西需要保存的! 如果你需要 你可以加页面缓存! 比如你提交数据之前 把你当前的 数据存储在客户端缓存(cookies , IE behavior, 或者flash )里面! 2. 如果后台服务器重新启动, 只要在服务器端实现 session 持久化 就可以 使session 不会因为 服务器重启而过期!
    3. 对于保存客户端的登录信息  , 你只用 把cookies 过期时间修改下 并且保存登录信息 , 下次 打开页面时 用filter 取cookies 信息来恢复服务器端session
      

  17.   

    没有固定的页面需要保存啊。。
    就是服务器timeout的时候。。
      

  18.   

    貌似除了cookie 
    好像还有种方法,听前辈们说过
    不过不记得了
    哈哈
      

  19.   


    正如23楼所说,你在试图把HTTP协议弄成有状态的......如果与服务器断开连接了,那么没有别的办法,只有在客户端本地保存信息也就是说保存cookie至于别的办法,==高手吧,关注一下~~
      

  20.   

    楼主说的是cookie吧。session在用户退出后就消失了。你想记住上次的操作,要么记到数据库里,要么用cookie
      

  21.   

    有困难,一般的做法 是先保存当前用户所访问的页面,这个信息可以放在cookes里面,等登录以后再拿出来用就可以啦。
      

  22.   

    最后还是把Session序列化了- -多谢各位。结贴