`

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

阅读更多

 

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

可以通过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异步方式实现。 用户登录采用模态弹出窗口,异步方式验证登录信息,不刷新页面。 用户注册,能检查用户名和密码是否为空,当用户输入用户名时可采用异步方式从数据库提取...

    spring_mvc控制网站登录用户失效后跳登录页面

    ### Spring MVC 控制网站登录用户失效后跳转登录页面 #### 概述 在Web应用开发中,确保用户的会话安全至关重要。对于基于Spring MVC框架的应用程序而言,一个常见的需求是当用户会话失效(例如:用户长时间未操作...

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

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

    Java SpringBoot实现的过滤器(和拦截器)控制登录页面跳转

    在SpringBoot中,我们可以自定义Filter实现预处理和后处理功能,例如检查用户是否已登录,未登录时重定向到登录页面。 4. **拦截器(Interceptor)**: Spring MVC提供了拦截器(Interceptor)机制,它同样可以...

    flutter 登录页以及登录后页面切换(路由)

    使用flutter 实现基础的登录页手机号码获取验证码,60s倒计时,通过路由页面切换,页面结构 1.标题 2.手机号输入框 3.验证码输入框 4.获取验证码 5.60s倒计时 6.登录按钮 7.跳转到主页

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

    然而,对于拥有页面访问权限控制的需求而言,如需要实现未登录用户访问特定页面时自动跳转至登录页面,就需要在Vue项目中集成一定的路由守卫逻辑。本篇文档将详细介绍在Vue项目中,如何利用vue-router实现未登录用户...

    Android webview QQ一键登录并向后台返回参数

    - 为了从WebView中获取登录后的参数(如授权码code),我们需要监听页面加载完成事件并在JavaScript中注入一个函数,该函数负责将参数通过调用Android原生方法传递出来。 - 在Java代码中,创建一个接口供...

    laravel实现Auth认证,登录、注册后的页面回跳方法

    在本文中,将详细探讨Laravel在用户登录、注册操作后,如何使用Auth认证中间件以及redirect()方法实现页面的回跳功能。 首先,Laravel的Auth认证中间件位于app/Http/Middleware/Authenticate.php文件中,这个中间件...

    WPF登录和跳转程序

    **WPF登录和跳转程序**是基于Windows Presentation Foundation(WPF)框架开发的一个应用程序,主要功能是实现用户登录验证并根据验证结果跳转至不同的界面。WPF是微软推出的一种用于构建桌面应用的UI框架,它提供了...

    android studio 第五章课后实践(实现登录界面设计、记住密码操作)

    6. 当用户选择“记住我”并登录后,下次打开应用时,可以在onCreate()方法中读取SharedPreferences中的用户名和密码,如果存在,可直接跳过登录界面,直接进入主界面。 以上就是关于Android Studio中实现登录界面...

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

    在Python中实现Web端的用户登录和注册功能是构建任何Web应用的基础。这里我们将深入探讨如何使用Python进行这些操作,特别关注代码片段中涉及的关键点。 首先,注册功能。在提供的代码中,可以看到使用了API来处理...

    java页面自动跳转

    ### JSP页面实现自动跳转 在JSP页面中实现自动跳转同样可以采用上述几种方式。以下是一个更完整的示例,展示了如何结合JavaScript和服务器端逻辑实现页面的自动跳转: ```jsp ;url=&lt;%=url%&gt;"&gt; window.moveTo(0...

    拦截到不同的登录页面

    在实际操作中,开发者可能需要根据用户的类型(如管理员、普通用户、未注册用户)或特定的访问条件(如IP地址、设备类型)来定制登录页面。这通常涉及到在配置文件中定义拦截规则,编写中间件或过滤器代码,以及设计...

    Tomcat+Servlet+mysql简单的登录注册和转跳到主页

    【标题】"Tomcat+Servlet+mysql简单的登录注册和转跳到主页"是一个基础的Web应用项目,它结合了三个核心组件:Tomcat服务器、Servlet技术以及MySQL数据库,用于实现用户的基本登录和注册功能,并在验证成功后转跳至...

    Session过期后自动跳转到登录页面的实例代码

    这种方式更加灵活,可以直接控制HTTP响应,确保用户在Session过期后能够被正确地引导回登录页面,重新验证其身份。在实际应用中,还需要考虑其他因素,如Ajax请求的处理、防止无限重定向问题以及提供友好的提示信息...

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

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

    SP实现登陆例子

    // 用户已登录,可跳过登录页面或直接进入主界面 } else { // 用户未登录,展示登录界面 } ``` 在"StudyDemo9"这个项目中,你可能可以找到具体的代码实现和更多细节,例如如何处理登录按钮的点击事件,以及如何在...

    Android实现外部唤起应用跳转指定页面的方法

    Android 实现外部唤起应用跳转指定页面的方法是指通过 scheme 的方式来实现跳转,首先需要在 App 中注册一个全局的事件监听,然后在 Manifest 文件中配置具体的 `&lt;intent-filter&gt;`,使得外部可以唤醒 App。...

    【Android】用户登录注册界面开发及用户信息管理案例代码详解

    在Android Studio中,通常会使用XML布局文件来设计登录和注册页面。登录界面一般包含用户名输入框(EditText)、密码输入框(EditText,通常设置为私密类型,显示为星号或圆点)、登录按钮(Button)以及可能的记住...

Global site tag (gtag.js) - Google Analytics