先说用的是spring的mvc。
   功能是这样的:现在用户在页面A, 然后点了一个连接要进入页面B,但进入页面B之前需要先登录,在用户登录完后要页面跳转到页面B,请问这个功能要怎么实现?
    查了下网上的资料:
    一个方案是用getHeader("referer"),但是这个只能获得页面的A的连接,所以不行。
    另一个方案是在拦截器中将页面B的连接保存在session中,在用户登录后从session中取出页面B的连接,然后跳转到页面B。这样做的问题是:
    1.在第一次点击页面B连接的时候,如果需要传递参数,并且不是url传参而是其他类型的传参(比如表单传参),在用户登录后跳转到页面B的时候,怎样把参数也过去(说白就是怎样保存第一次发链接时的参数)。
    2.使用ajax的时候也会出现需要登录时候,是否要在所有的ajax连接上加一个参数来区分它不是普通的连接,然后在返回到javascript中单独做处理。
    求大虾来解决问题。谢谢!!!

解决方案 »

  1.   

    1.form 表单 提交,里面埋input hidden 放参数
    2.登录信息放session里
      

  2.   

    我觉得第一种情况是很少的把!一般是点击链接然后判断用户是否有登录,没登录就登录,登录的同时把用户的请求放到session中就可以了!第二种情况没看明白
      

  3.   

    2楼能说清楚些么?
    登录信息肯定是放在session中,我说的问题是在为登录或session过期后跳转到登录页的时候。
    里面放input hidden放参数 是放在哪个表单中?还有第一次点页面B连接的时候,在哪里接参数,如果要接收参数再传到页面B,岂不是要把所有连接的参数都写上面?或者使用request.getParameterValues()?放表单参数? 那传文件的时候咋办?
      

  4.   

    - -回复2楼的方法错了 应该是request.getParameterMap()
      

  5.   


    function showXXXXX(){
    var login = getCookie('XXX');
    if(login == null || login == ''){
    window.location.href="http://www.login.com/login.do?returnURL=http://目标页面";
    }else{
    直接window.location.href 目标
    return false;
    }

      

  6.   

    1楼FORM提交的话肯定是要用ACTION后台处理后跳转了 也很简单
      

  7.   

    我通常的做法是这样,在一个js文件里写这个函数
    function toLogin(){
    top.location.href="login.jsp?returnTo=" + encodeURIComponent(document.URL);
    }
    需要做登录验证的页面就引入这个函数,在那页面里判断是否登录,如果没登录就调用这个函数,登录成功给以后,获取returnTo的值,有值就去对应页面,没值就去默认页面。
    其实CSDN也有这功能,你可以注销了,然后去CSDN下载一个东西,系统会把你踢到登录页面,你仔细看下这个页面的地址栏
      

  8.   

        多谢上面几位的回答。
        可是我觉得还是解决不了这个问题,我觉得处理连接之类的东西都要放在后台,因为很多连接不一定是从页面上点过去的,也有些是从浏览器地址栏直接进入的,这样的请求就没有javascript做限制,而且比如一些表单的请求,光有一个连接是不够的,还需要有响应的参数。所以我觉得各种处理是要放到后台的。
      

  9.   

    很简单啊,就是调用在登录B页面前,调用下Login.jsp,
    不过你要吧B的路径,传给Login.jsp,然后登录成功后,再跳转回这个B路径。
      

  10.   

    spring mvc 每个方法不是有返回的视图吗 登录方法return "redirect:" + B页面链接 不就行了