跳转到上一次浏览的页面

来源:互联网 发布:淘宝主图视频要求几秒 编辑:程序博客网 时间:2024/05/17 16:56
 
在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,并将本页的绝对URLdocument.location.href)作为参数传递到login.jsp,参数名称叫做from
 
<href="javascript:forwardlogin()">登录</a>
 
 
假如‘商品页面’的绝对URL
http://localhost:8080/shopping/show/product.jsp
那么点击登录链接后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.setAttribute(“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的方式实现。
 
原创粉丝点击