跳转到上一次浏览的页面

 
在jsp中实现登录后跳转到上一次浏览的页面其实很简单基本思路如下:
 
以网上商城为例,首先,用户找到喜欢的商品(我们叫它‘商品页面product.jsp’)想要购买,但是现在还没有登录,就会发生两种方式的登录方式:
第一种,用户点击‘登录’跳转到登录页面进行登录。
 
第二种,用户点击‘购买’服务器判断此用户没有登录跳转到登录页面进行登录。
 
两者的区别是:第二种要判断是否登录过。
 
先看第一种我们可以通过记录‘商品页面product.jsp’的url的方式实现,用javascript可以很简单的办到。代码如下:
 
< script  type ="text/javascript" >
    
function forwardlogin(){
        
var url = new Array();
        url.push(
"login.jsp?from=");
        url.push(document.location.href);
        document.location.href
=url.join("");
    }

</ script >
 
 
通过下面的代码就可以调用此 js 函数之后就后调整到登录页面 login.jsp, 并将本页的绝对 URL document.location.href )作为参数传递到 login.jsp, 参数名称叫做 from
 
< href ="javascript:forwardlogin()" > 登录 </ a >
 
 
假如‘商品页面’的 绝对 URL
那么点击登录链接后 URL 就会变成
http://localhost:8080/shopping/login.jsp?from=http://localhost:8080/shopping/show/product.jsp
 
当然登录页面 login.jsp 页面也需要处理。需要通过 javascript 提交,因为在提交前需要判断是否有 from 这个参数传递过来。代码如下:
 
< script  type ="text/javascript" >
    
// 用于登录后返回上一次浏览的页面
    function login(){
        
var login = document.getElementById("login");
        
var from = "${param.from }";
        
if(from == ""){
            
return true;
        }
 else {
            login.action
="login.do?from="+from;
            
return true;
        }

    }

</ script >


< form  id ="login"  action ="login.do"  method ="post"  onsubmit ="return login();" >
<! —- 登录表单 略 -- >
</ form >
 
 
那么登录成功后应该跳转到一个登录成功页面 forward.jsp 。此页面负责跳转到‘商品页面’也就是我们通常说的上一次浏览的页面。
 
forward.jsp代码如下:
 
 
<%@ page contentType = "text/html; charset=GBK" %>
<! DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" >
< html >
< head >
        
< title > 正在返回上一次浏览的页面... </ title >
        
< SCRIPT  LANGUAGE ="JavaScript" >  
        
<!-- 
        
var time = 2//时间,秒 
        var url = "${param.from}";
        
        
// 若from不存在则调整到用户管理首页
        if(url == ""){
            time 
= 0;
            
// 用户管理首页
            url="/shopping/userinfo/index.jsp";
        }

        
        
function Redirect()
            window.location 
= url; 
        }
 
        
var i = 0
        
function dis()
            document.all.s.innerHTML 
= (time - i) + ""
            i
++
        }
 
        timer
=setInterval('dis()'1000);//显示时间 
        timer=setTimeout('Redirect()',time * 1000); //跳转 
        
        
//--> 
    
</ SCRIPT >
</ head >
< body >
<%  if(request.getParameter("from") != null) {  %>
        
< center >
            
< font  color ="#4b4b4b"  size ="2" > 您可以前往以下地址: </ font >
            
< br >
            
< font  color ="#4b4b4b"  size ="2" > 系统会在
< font  color ="#ff0000" >
< span  id ="s" > 3秒 </ span >
 
</ font >
后,自动跳到下面的连接
</ font >
            
< br >
            
< font  size ="2" >  
< href ="${param.from }" > ${param.from} </ a >
            
</ font >
        
</ center >
<%  }  %>
</ body >
</ html >
 
截图如下:
 
 
 
 
 
实现了第一种,第二种也就不难做了。之前说过,两者的区别是:第二种要判断是否登录过。
      
       那么,我们就在商品页面product.jsp当点击购买时判断一下用户是否登录,这里假设用户登录成功后会在session属性范围中存放一个名为username的属性,即:
 
  
 session.set Attribute(“username”,username);
 
 
商品页面product.jsp部分代码,用javascript判断是否登录,若没有登录就跳转到登录跳转页面 forwardLogin.jsp 并记录此页面的绝对 URL, 代码如下:
 
 
< script type = "text/javascript" >
   function buy() {
      var username = "${sessionScope.username}" ;
      if (username == "" ) {
         var url = new Array();
         url.push( "forwardLogin.jsp?from=" );
         url.push(document.location.href);
         document.location.href=url.join( "" );
      } else {
         var trolley = document.getElementById( "trolley" );
         trolley.submit();
      }
   }
</ script >
 
< form id = "trolley" action = "buy/trolley.do" method = "post" >
   <!-- 商品的一些信息 点击购买后将加入到购物车中
提示:可以用隐藏域存放信息或其他方法     -->
</ form >

 

 

登录跳转页面forwardLogin.jsp就非常简单了,代码如下:

  
<%@ page contentType = "text/html; charset=GBK" %>
<! DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//ZH" >
< html >
   < head >
      < title > 请先登录 : ( </ title >
      < meta http-equiv = "content-type" content = "text/html; charset=UTF-8" >
      < meta http-equiv = "refresh" content = "0;url=/shopping/login.jsp?from=${param.from }">
   </ head >
   < body >
      < script type = "text/javascript" >
         window.alert( " 请先登录 : ( " );
      </ script >
   </ body >
</ html >

 

 总结:

   此方式主要是通过用 javacript 过记录url的方式实现。
 
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值