`

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

阅读更多

 

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

可以通过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行的代码就实现了跳转。

分享到:
评论

相关推荐

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

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

    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 ...

    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表单校验, 页面之间实现了跳转。

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

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

    TCP/IP教程TCP/IP基础

    4.3 无类域前路由(CIDR) 38 4.3.1 无类地址 38 4.3.2 强化路由汇聚 39 4.3.3 超网化 39 4.3.4 CIDR怎样工作 39 4.3.5 公共地址空间 40 4.3.6 RFC 1597和1918 40 4.4 小结 40 第5章 ARP和RARP 41 5.1 使用地址 41 ...

    vue+axios新手实践实现登陆的示例代码

    其实像这类的文章网上已经有很多很好的,写这篇文章,相当于是做个笔记,以防以后忘记 用到的:1、 vuex 2、axios...// 初始化时用sessionStore.getItem('token'),这样子刷新页面就无需重新登录 const state = { user:

Global site tag (gtag.js) - Google Analytics