`
yahaitt
  • 浏览: 757134 次
  • 性别: Icon_minigender_2
  • 来自: 杭州
社区版块
存档分类
最新评论

登录/注册后跳回登录/注册前的页面实现方法

阅读更多

网站开发中经常会遇到这样的问题,登录后自动转到了首页或者用户管理首页,这样有时候会让用户觉得很不方便,特别是电子商务类的网站,当用于在浏览产品页面时,需要购买,但是只有登录后的用户才能进入购买页面,所以如果当用户登录后进入的不是他登录前的产品浏览页面,他得去重新找,这是非常不友好的。

可以通过request.getHeader("referer");方式来实现登录/注册后返回进入登录或注册页面前的页面

举例:

java 代码
  1. /**  
  2.  * 进入到登录页面  
  3.  * @param mapping  
  4.  * @param form  
  5.  * @param request  
  6.  * @param response  
  7.  * @return  
  8.  */  
  9. public ActionForward loginview(ActionMapping mapping, ActionForm form,   
  10.         HttpServletRequest request, HttpServletResponse response) {    
  11.   
  12.     //登录后跳转回进来的页面,如果进来之前的页面是登录和退出,则登录后跳转到首页   
  13.     String pagefrom = request.getHeader("referer");   
  14.     if(pagefrom.indexOf("method=login")>0 || pagefrom.indexOf("method=logout")>0)   
  15.     {   
  16.         pagefrom = pagefrom.substring(0,pagefrom.lastIndexOf("/")+1);   
  17.     }   
  18.     request.setAttribute("pagefrom", pagefrom);   
  19.        
  20.     saveToken(request);   
  21.        
  22.     User object = null;   
  23.     try {   
  24.         object = entityClass.newInstance();   
  25.     } catch (InstantiationException e) {   
  26.         log.error(e);   
  27.     } catch (IllegalAccessException e) {   
  28.         log.error(e);   
  29.     }   
  30.     initForm(form, request, object);   
  31.     return mapping.findForward(LOGINVIEW);   
  32. }  

 

在登录页面中设置hidden元素:

登录页面部分代码
  1. <html:form action="/userm.do" focus="loginname" styleClass="u_login_form" onsubmit="return validateUserForm(this)">  
  2.                 <input type="hidden" name="method" value="login"/>  
  3.                 <input type="hidden" name="pagefrom" value="${ pagefrom }"/>  
  4.                 <input type="hidden" name="name" value="name"/>  
  5.                 <input type="hidden" name="mail" value="yahaitt@163.com"/>  
  6.                 <div class="l"><img src="${css}/images/login_icon_01.gif" />div>  
  7.                 <div class="l">  
  8.                     <html:text property="loginname" styleClass="text"/><br />  
  9.                     <html:password property="password" styleClass="text"/><br />  
  10.                     <%@ include file="/commons/messages.jsp" %>  
  11.                 div>  
  12.                 <div class="l"><html:img src="${css}/images/login_icon_02.gif" onclick="if(validateUserForm(document.userForm)) document.userForm.submit();"/>div>  
  13.                 <div class="c">div>  
  14.             html:form>  
  15.             <html:javascript formName="userForm" staticJavascript="false" dynamicJavascript="true" cdata="false"/>  
  16.             <script type="text/javascript" src="${ctx}/scripts/validator.jsp">script>  

 

根据登录页面中的pagefrom元素的值,在登录成功后跳转到该值对应的页面

登录代码:

java 代码
  1.   
  2.     /**  
  3.      * 登录  
  4.      * @param mapping  
  5.      * @param form  
  6.      * @param request  
  7.      * @param response  
  8.      * @return  
  9.      */  
  10.     public ActionForward login(ActionMapping mapping, ActionForm form,   
  11.             HttpServletRequest request, HttpServletResponse response) {    
  12.         String pagefrom = request.getParameter("pagefrom");   
  13.         request.setAttribute("pagefrom", pagefrom);   
  14.            
  15.         if (isCancelled(request))   
  16.             return list(mapping, form, request, response);   
  17.         if (!isTokenValid(request)){   
  18.             saveDirectlyError(request, "重复提交");   
  19.             return mapping.findForward(LOGINVIEW);   
  20.         }   
  21. //      resetToken(request);   
  22.            
  23.         // run validation rules on this form   
  24.         ActionMessages errors = form.validate(mapping, request);   
  25.         if (!errors.isEmpty()) {   
  26.             saveErrors(request, errors);   
  27.             refrenceData(request);   
  28.             return mapping.findForward(LOGINVIEW);   
  29.         }   
  30.            
  31.            
  32.   
  33.         User object = doNewEntity(form, request);   
  34.         initEntity(form, request, object);   
  35.            
  36.         User user = userManagerCommon.checkPassword(object.getLoginname(), object.getPassword());   
  37.         if(null==user)   
  38.         {   
  39.             errors.add("password",new ActionMessage("user.missing",object.getPassword()));   
  40.             saveErrors(request, errors);   
  41.             return mapping.findForward(LOGINVIEW);   
  42.         }   
  43.            
  44.         SessionUser.saveSession(request,user);   
  45.            
  46.            
  47.         try {   
  48.             response.sendRedirect(pagefrom);   
  49.             return null;   
  50.         } catch (IOException e) {   
  51.             e.printStackTrace();   
  52.         }   
  53.            
  54.         return mapping.findForward(INDEX);   
  55.     }  

 

第48行的代码就实现了跳转。

分享到:
评论
2 楼 liushilang 2009-10-28  
OK very good
1 楼 ttitfly 2007-10-10  
继续努力:)

相关推荐

    用户注册及弹出式登录(ASP.NET,Jquery+ashx实现)

    代码为ASP.NET C#,采用asp.net和jquery异步方式实现。 用户登录采用模态弹出窗口,异步方式验证登录信息,不刷新页面。 用户注册,能检查用户名和密码是否为空,当用户输入用户名时可采用异步方式从数据库提取...

    PHP 登录完成后如何跳转上一访问页面

    项目需求 访问网站页面时,有的页面需要授权才能访问,这时候就会要求用户登录,跳转到登录页面login.php,怎么实现登录后返回到刚才访问的页面。解决思路1: 在跳转到登录页面之前要将当前访问页面的url保存到...

    vue实现未登录跳转到登录页面的方法

    主要介绍了vue实现未登录跳转到登录页面的方法,主要目的是实现未登录跳转,需要的朋友参考下吧

    WPF登录和跳转程序

    WPF开发的操作员登录程序,通过mysql数据库验证,跳转到主界面。

    AndroidStudio实现QQ登录

    使用AndroidQQ登录。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

    用Python实现web端用户登录和注册功能的教程

    主要介绍了用Python实现web端用户登录和注册功能的教程,需要的朋友可以参考下

    iOS和Android用同一个二维码实现跳转下载链接的方法

    但是这二维码还有一个需求就是,用户已经下载了这个app,当用户打开app进入到注册页面时,再次扫描这个二维码时,自动填写邀请码进行注册。那么该如何实现,细节就不说了,直接上代码。 使用js实现,其实代码非常...

    vue登录注册及token验证实现代码

    而对于某些功能页面,会尝试获取本地存储中的token进行判断,存在则可进入,否则跳到登录页或弹出登录框。 而在vue单页中,我们可以通过监控route对象,从中匹配信息去决定是否验证token,然后定义后续行为。 具体...

    android实现登陆界面

    而对于开发工程师来说,把这几个页面实现了并实现数据的闭环处理,一个app 的框架也就大致实现了。一般的我们关注的几个页面如下:(专业词汇是否这样请指教) 引导页面(Guide page/onBoarding,好像国内外称呼不...

    利用python、tensorflow、opencv、pyqt5实现人脸实时签到系统

    基于python opencv人脸识别的签到系统前言先看下效果实现的功能开始准备页面的构建功能实现代码部分总结 前言 一个基于opencv人脸识别和TensorFlow进行模型训练的人脸实时签到系统,作者某...点击注册会跳到注册页面进

    PL/SQL Developer 6.05注册版-1

    &lt;br&gt;此版本包含注册文件和简体中文语言安装包 &lt;br&gt;Enhancements in PL/SQL Developer 7.1.5 ====================================== - Fixed some access violations - Inserting a record in the ...

    PL/SQL Developer 7.1.5 注册版-3

    &lt;br&gt;此版本包含注册文件和简体中文语言安装包 &lt;br&gt;Enhancements in PL/SQL Developer 7.1.5 ====================================== - Fixed some access violations - Inserting a record in the ...

    Android实现一个简易版本的购物车小案例

    Android实现一个简易版本的购物车小...1、用户注册、用户登录。 2、商品、购物车列表 (2)android 1、ViewPager2 + Fragment实现页面的切换。 2、SQLite数据库、基础组件的使用。 3、shape和selector修饰组件样式。

    hibernate简单程序,实现从页面对数据库的增删改查(主从表关联)

    前段时期一直使用三层来写从页面对数据库的增删改查,今天用hibernate框架来实现从...1、用户能够注册,2、注册成功后直接跳到登录页面,3、登录成功后直接跳到对公司、人员的增删改查, 4、要有对人员界面的分页功能

    PL/SQL Developer 7.1.5 注册版

    &lt;br&gt;此版本包含注册文件和简体中文语言安装包 &lt;br&gt;Enhancements in PL/SQL Developer 7.1.5 ====================================== - Fixed some access violations - Inserting a record in the ...

    安卓移动应用开发:Intent与组件通信实现页面跳转功能实现

    本次实验主要是显式Intent的使用方法以及如何通过显式Intent在不同的Activity之间实现跳需要注意的: - 显式Intent是指明了跳转目标的Intent对象。可以通过指明目标Activity的包名、类名或Intent的构造函数等方式来...

    JSP图书馆管理系统源码 JSPTUSHUGUANLIXITONG.rar

    读者可以注册登录,登录时会判断账号类型再分别跳到各自对应的页面,读者可以查找,借阅,还书,查看历史借阅记录,修改个人资料,密码。 管理员可以修改添加图书,修改添加读者,修改添加分类,管理借阅信息等等...

    web前端旅游页面div+css实现

    这是一套完整的web前端旅游页面, 一共7个页面, 并且在登录、注册时具有js表单校验, 页面之间实现了跳转。

    Linux下视频点播系统的实现.pdf

    本文详细介绍了使用Darwin流媒体服务器在Linux下实现视频点播系统的方法和步骤。Darwin流媒体服务器的开放源代码和免费使用特点使其成为了Linux平台上的一个理想选择。我们希望本文能够帮助读者快速搭建视频点播系统...

Global site tag (gtag.js) - Google Analytics