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

    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