天天飞车为什么登陆后跳转到指定页面还是回到登陆页面?

2012年 总版技术专家分年内排行榜第一
2013年 总版技术专家分年内排行榜第七2011年 总版技术专家分年内排行榜第五2009年 总版技术专家分年内排行榜第九
本帖子已过去太久远了,不再提供回复功能。应用场景:一般网页游客和登录用户看到的内容是有区别的,如果一个未登录的用户在看到登录提示后跳转到登录界面登录,那么登录成功后怎么返回到该页面呢?
写这篇博客是因为我自己把解决问题的方向想偏了,本来实现是很简单的....为了避免再走弯路吧
假设用户在&/a.html 看到登录提示,然后点击登录跳转到&/login.html,登录界面使用ajax验证用户登录信息,当返回信息为成功时,在回调函数里要做这些逻辑的处理:
1.判断document.referrer是否为空,若为空本页面就不是从其它页面跳转过来的,就将页面跳转至网站首页
2.若document.referrer不为空,则需要判断前一个页面是否是本站点的页面,以免跳到其它站点去了,如果是其它站点则跳转至首页;
3.若document.referrer不为空且为本站点页面,则需要跳转至该页面
我想偏的地方就是第三步,一开始我用的&window.history.back();
回到上一个页面,这样的操作相当于点击了浏览器的后退按键,原来的页面是没有得到刷新的,页面的内容完全来自于浏览器缓存,然后我想到用cookie,设置document.cookie = &'reload=true',然后在一个每个页面都包含的js里去读cookie,判断cookie中是否有reload=true,如果有则删除该属性,并使用location.reload();
重新加载页面,看上去没什么问题,可是百度了各种代码去删除cookie中的reload字段的值都没有成功,也试过敲了一遍《JavaScript高级程序设计(第3版)》的cookie删除代码,仍然不见效果,想来这操作cookies也是件蛋疼的事。
删除cookie始终搞不定让我不得不想想是否还有其它方法来实现这个效果,然后想location.href是否可以实现重新加载呢,试了一下location.href果然会重新加载新URL所指向的页面。《JavaScript高级程序设计(第3版)》中有一句&每次修改location的属性(hash除外),页面都会以新URL重新加载”....另外使用location.href = URL &的效果与使用location.assign(URL)
的效果是完全一样的,因为location.href = URL的方式最终以URL值调用assign()方法!
location.assign() 方法加载新的文档。
window.location 对象用于获得当前页面的地址 (URL),并把浏览器重定向到新的页面。
因此在登录成功的回调函数里执行下列操作就可以实现登录跳回刷新页面了
var prevLink = document.
if($.trim(prevLink)==''){
location.href = '/index.html';
if(prevLink.indexOf('')==-1){ //来自其它站点
location.href = '/index.html';
if(prevLink.indexOf('register.html')!=-1){
//来自注册页面
location.href = '/index.html';
location.href = prevL
本文已收录于以下专栏:
相关文章推荐
demo04.jsp:
3秒后跳转!
Insert title here
dologin.jsp
&%@ pag...
dos命令行查询端口常用命令在windows命令行窗口下执行:运行-cmd-netstat-a 显示所有活动的TCP连接以及计算机***的TCP和UDP端口。
netstat-e 显示以太网发送和接收的...
text-decoration:
跳转至登录页面前将当前页面url记录下来,比如放入session的一个变量&url&,登录验证成功后判断session中的url是否有值,如果有跳转至此页面,如果没有,跳转主页
功能描述:有些web项目中的网页需要用户登录后才可以访问,当用户未登录时访问该页面则跳转到登录页面,等用户输入用户名,密码登录成功后再跳转到之前用户需要访问的页面。
这里使用servlet实现访问控制...
我们在一些项目开发中,会遇到这样类似的问题,当用户点击删除或者修改以后,页面总是
Jquery实战之5秒返回页面
倒计时,几秒后跳回首页
第一步:准备两个页面,一个首页index.html,一个错误页面404.html
第二步:做一个错误提示信息,注意数字 ...
在用户登录的时候,将用户名显示在登录成功的页面,使用session。
用户登录jsp
action=&user.do?method=login&
id=&form1&
他的最新文章
讲师:姜飞俊
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)首先要在web.xml里面配制一个usercenter过滤器,当用户请求中包含http.../usercenter/..如下时,则会执行userCenterFilter过滤器,判断用户是否登录,若没有登录,则通过req.getRequestURI();获得请求路径,通过req.getQueryString();获得请求参数。然后拼接好,存入到web常量中,用户点击登录后,会去触发对应方面,登录成功后,进行页面跳转时,获得该路径 进行跳转。
&&& 需要注意的问题:
一,在web.xml里面进行配制时,需要注意filter-mapping里面的url-pattern映射规则如下(摘自:/mailingfeng/archive//2432687.html):
&&&&& 当一个请求发送到servlet容器的时候,容器先会将请求的url减去当前应用上下文的路径作为servlet的映射url,比如我访问的是http://localhost/test/aaa.html,我的应用上下文是test,容器会将http://localhost/test去掉,剩下的/aaa.html部分拿来做servlet的映射匹配。这个映射匹配过程是有顺序的,而且当有一个servlet匹配成功以后,就不会去理会剩下的servlet了(filter不同,后文会提到)。其匹配规则和顺序如下:&
1.&&&& 精确路径匹配。例子:比如servletA 的url-pattern为 /test,servletB的url-pattern为 /* ,这个时候,如果我访问的url为http://localhost/test ,这个时候容器就会先进行精确路径匹配,发现/test正好被servletA精确匹配,那么就去调用servletA,也不会去理会其他的servlet了。&
2.&&&& 最长路径匹配。例子:servletA的url-pattern为/test/*,而servletB的url-pattern为/test/a/*,此时访问http://localhost/test/a时,容器会选择路径最长的servlet来匹配,也就是这里的servletB。&
3.&&&& 扩展匹配,如果url最后一段包含扩展,容器将会根据扩展选择合适的servlet。例子:servletA的url-pattern:*.action&
4.&&&& 如果前面三条规则都没有找到一个servlet,容器会根据url选择对应的请求资源。如果应用定义了一个default servlet,则容器会将请求丢给default servlet(什么是default servlet?后面会讲)。&
&&&& 根据这个规则表,就能很清楚的知道servlet的匹配过程,所以定义servlet的时候也要考虑url-pattern的写法,以免出错。&
&&&&& 对于filter,不会像servlet那样只匹配一个servlet,因为filter的集合是一个链,所以只会有处理的顺序不同,而不会出现只选择一个filter。Filter的处理顺序和filter-mapping在web.xml中定义的顺序相同。&
二,url-pattern详解&
&&&&&&&& 在web.xml文件中,以下语法用于定义映射:&
l. 以”/’开头和以”/*”结尾的是用来做路径映射的。&
2. 以前缀”*.”开头的是用来做扩展映射的。&
3. “/” 是用来定义default servlet映射的。&
4. 剩下的都是用来定义详细映射的。比如: /aa/bb/cc.action&
所以,为什么定义”/*.action”这样一个看起来很正常的匹配会错?因为这个匹配即属于路径映射,也属于扩展映射,导致容器无法判断
二,java 中取路径,见usercenterFilter
相关代码如下:
&!-- 用户中心登录状态过滤 --&
&filter-name¢erFilter&/filter-name&
&filter-class&com.friendcom.dongzuo.web.filter.userCenterFilter&/filter-class&
&filter-mapping&
&filter-name¢erFilter&/filter-name&
&url-pattern&/usercenter/*&/url-pattern&
&/filter-mapping&
usercenterFilter.java
package com.friendcom.dongzuo.web.
import com.friendcom.core.util.LogicU
import com.friendcom.dongzuo.entity.C
import com.friendcom.dongzuo.web.WebC
import javax.servlet.*;
import javax.servlet.http.HttpServletR
import java.io.IOE
* Created by pc on .
public class userCenterFilter implements Filter {
public void init(FilterConfig filterConfig) throws ServletException {
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) servletR
Customer cus=(Customer) req.getSession().getAttribute(WebConstants.LOGIN_SESSION);
if(LogicUtils.isNull(cus)){
String rpath = req.getRequestURI();
if(LogicUtils.isNotNullAndEmpty(rpath)) {
rpath = rpath.substring(rpath.indexOf(&usercenter&));
String param = req.getQueryString();
if(LogicUtils.isNotNull(param)) {
rpath=rpath +&?&+
req.getSession().setAttribute(WebConstants.LOGIN_REDIRECT, rpath);
req.getRequestDispatcher(&../login.htm&).forward(servletRequest,servletResponse);
res.sendRedirect(&http://&+req.getHeader(&Host&)+&/mall/login.htm&);
filterChain.doFilter(servletRequest,servletResponse);
public void destroy() {
本文已收录于以下专栏:
相关文章推荐
package elkw.
import javax.servlet.F
import javax.servlet.FilterC
1要达到的目的:在未登录前,任何访问url都跳转到login页面;登录成功后才可以获取相关资源
App开发,肯定会遇到需要判断是否登录,未登录即跳转到登录页的问题,其实ionic ionic2中都很容易解决:
在token生成上考虑到单点登录,所以token不能一直固定,否则在任何时候,只要拥有token就可以同时至少两个人使用同一个帐户,这是目前我们业务上不允许的。最终我选择了”username+pass...
前几天,网上找了些朋友的资料,做了一个小功能,验证用户是否重复登录。
原理就是:每一个用户,登录前有一个验证,当第一次登录时,会把其session信息,添加到一个特定的静态变量中。当第二次登录时,验证...
项目中,想实现一个功能。    直接访问某个需要登录的url,比如/addArticle,可能会跳转到登录页面login.html。   登录成功之后,自动跳转到/addArticle这个登录前的页面...
先贴贴代码
struts.xml中代码:
list*,delete*,update*,save*,find*
很多时候,我们需要做到,当用户登录成功后,跳转回登录前的页面。如果用户是点击&登录&链接去到登录页面进行登录的,我们很容易跟踪用户的登录前的页面。比如,在&登录&链接后加一个url参数,如:http:...
pring security 做的登录程序,不同角色的用户登录之后,可能会跳转到不同的页面,在默认情况下的配置,都是跳转到同一个页面,因为在 form-login 中设置的 default-targe...
1.前台简单的登录测试页面login.jsp 
Java代码 
page language=&java& import=&java.util.*& pageEncoding=&...
他的最新文章
讲师:姜飞俊
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)

参考资料

 

随机推荐