跳转到上一次浏览的页面
来源:互联网 发布:淘宝主图视频要求几秒 编辑:程序博客网 时间: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>
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 。
<a 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>
// 用于登录后返回上一次浏览的页面
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">
<a href="${param.from }">${param.from}</a>
</font>
</center>
<%... } %>
</body>
</html>
<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">
<a 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的方式实现。
- 跳转到上一次浏览的页面
- 登录后跳回到上一次浏览的页面
- ajax登录后返回上一次浏览的页面
- 登陆之后跳转到登陆之前浏览页面的实现
- SPA应用在hash变化切换页面时,保存上一次该页面浏览的位置
- 博客浏览:js 控制页面的跳转
- 织梦dedecms手机浏览自动跳转到手机版页面的方法
- filter实现登录验证,并实现页面跳转到登录前浏览的页面(同步异步皆可)
- 跳转到web的页面
- iOS 点击一个页面上的按钮跳转到tabBar的另一个页面
- 点击返回按钮返回用户上一次浏览的界面
- Android Studio 光标返回上一次浏览的位置
- 如何在iPhone应用上跳转到在AppStore上的评论页面
- PHP判断是否是手机浏览页面,是的话跳转到手机页面。
- js页面跳转的问题(跳转到父页面,跳转到最外层页面)
- 实现登录时间过期后,下次登录时跳转到上次会话最后一次访问的页面
- jsp页面跳转到子页面和返回上一页,附带动态改变父页面的iframe高度大小
- GridView中使用LinkButton,获取LinkButton上的ID值,用于跳转到编辑页面
- Parse , Covert.To,TryParse类型转换
- Unix系列shell程序编写3
- Notes of studying Oracle 11g database (1)
- 理解HTTP session原理及应用
- trie 树
- 跳转到上一次浏览的页面
- asp.net最常用的三十三种编程代码(4/4)
- ASP.NET遇到问题---Datareader访问数据库
- 5.3
- JS的正则表达式
- ASP.NET2.0 ObjectDataSource的使用详解(1)
- pb自动注册ASA数据源
- ASP.NET2.0 ObjectDataSource的使用详解(2)
- 五一假期