session过期重新登陆后要求回到原来的过期前的页面,但是值不要求保留。
我是使用struts的拦截器控制action,过滤器控制jsp处理用户权限控制的。
脑子里瞎想想,是否可以在拦截器里获取画面当前地址栏
的地址保留下来。但是通过什么类型传过login画面呢?session?请高手提示一下好的做法。拦截器大致如下:
public String intercept(ActionInvocation invocation) throws Exception
{
    ActionContext ctx = invocation.getInvocationContext();
    Map session = ctx.getSession();
    String user=(String)session.get("user");
    if(user !=null)
    {
        return invocation.invoke();
    }else
    {
        获取当前页面地址?
    }
    return Action.LOGIN;
}

解决方案 »

  1.   

    LZ是想在用户session过期之后,刷新跳转登陆界面,然后登陆之后再跳转到session超时登陆前的界面吧
      

  2.   

    系统发现超时后,将当前要转向的地址(包括提交的参数等等)编码,作为登录页面的参数,比如login.shtml?redirect=.....,用户登录后,系统判断是否有redirect参数,有则重定向redirect的值的页面
      

  3.   


    思路应该是正确的,在SSH框架中,具体的写法能不能提示一下,我感觉session过期前的画面的url很难取。
      

  4.   


    request.getRequestURI() 
    request.getQueryString()
    request.getAttribute("javax.servlet.forward.request_uri")
    request.getAttribute( "javax.servlet.forward.query_string ")你去看些这些方法就知道了
      

  5.   

    一般是在执行某个操作时,系统才会去拦截判断是否过期,这是时候就可以获取url,要的是用户请求的url,而不是页面原先的url,登录之后继续用户执行的操作,而不是回到原界面,这样用户体验会比较好。
      

  6.   

    获取url的方法很多
    还有Request.QueryString()、Request.Form()、Request.Params()等等
      

  7.   

    你可以在做web.xml中做个“欢迎页”。这样就会自动跳转到那了
      
      <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
      </welcome-file-list>
      

  8.   

    笨人贡献一个笨办法。没到一个页面,都存贮一个当前页面的url。
    然后把这个url作为submit的参数传给后台,
    比如get方法,就是a.action?paraA=123&lastUrl=x.jsp这样,如果session正常,就不用管传上来的值
    如果session不正常了,就从url里面取出这个lastUrl,然后跳转过去。不过这个方法要重写所有的url,不是很方便...是很不方便。就当我帮lz顶一下吧!good luck
      

  9.   

    这个问题的难点就是取url,我也想知道这个