网站开发中经常会遇到这样的问题,登录后自动转到了首页或者用户管理首页,这样有时候会让用户觉得很不方便,特别是电子商务类的网站,当用于在浏览产品页面时,需要购买,但是只有登录后的用户才能进入购买页面,所以如果当用户登录后进入的不是他登录前的产品浏览页面,他得去重新找,这是非常不友好的。
可以通过request.getHeader("referer");方式来实现登录/注册后返回进入登录或注册页面前的页面
举例:
java 代码
-
-
-
-
-
-
-
-
- public ActionForward loginview(ActionMapping mapping, ActionForm form,
- HttpServletRequest request, HttpServletResponse response) {
-
-
- String pagefrom = request.getHeader("referer");
- if(pagefrom.indexOf("method=login")>0 || pagefrom.indexOf("method=logout")>0)
- {
- pagefrom = pagefrom.substring(0,pagefrom.lastIndexOf("/")+1);
- }
- request.setAttribute("pagefrom", pagefrom);
-
- saveToken(request);
-
- User object = null;
- try {
- object = entityClass.newInstance();
- } catch (InstantiationException e) {
- log.error(e);
- } catch (IllegalAccessException e) {
- log.error(e);
- }
- initForm(form, request, object);
- return mapping.findForward(LOGINVIEW);
- }
在登录页面中设置hidden元素:
登录页面部分代码
- <html:form action="/userm.do" focus="loginname" styleClass="u_login_form" onsubmit="return validateUserForm(this)">
- <input type="hidden" name="method" value="login"/>
- <input type="hidden" name="pagefrom" value="${ pagefrom }"/>
- <input type="hidden" name="name" value="name"/>
- <input type="hidden" name="mail" value="yahaitt@163.com"/>
- <div class="l"><img src="${css}/images/login_icon_01.gif" />div>
- <div class="l">
- <html:text property="loginname" styleClass="text"/><br />
- <html:password property="password" styleClass="text"/><br />
- <%@ include file="/commons/messages.jsp" %>
- div>
- <div class="l"><html:img src="${css}/images/login_icon_02.gif" onclick="if(validateUserForm(document.userForm)) document.userForm.submit();"/>div>
- <div class="c">div>
- html:form>
- <html:javascript formName="userForm" staticJavascript="false" dynamicJavascript="true" cdata="false"/>
- <script type="text/javascript" src="${ctx}/scripts/validator.jsp">script>
根据登录页面中的pagefrom元素的值,在登录成功后跳转到该值对应的页面
登录代码:
java 代码
-
-
-
-
-
-
-
-
-
- public ActionForward login(ActionMapping mapping, ActionForm form,
- HttpServletRequest request, HttpServletResponse response) {
- String pagefrom = request.getParameter("pagefrom");
- request.setAttribute("pagefrom", pagefrom);
-
- if (isCancelled(request))
- return list(mapping, form, request, response);
- if (!isTokenValid(request)){
- saveDirectlyError(request, "重复提交");
- return mapping.findForward(LOGINVIEW);
- }
-
-
-
- ActionMessages errors = form.validate(mapping, request);
- if (!errors.isEmpty()) {
- saveErrors(request, errors);
- refrenceData(request);
- return mapping.findForward(LOGINVIEW);
- }
-
-
-
- User object = doNewEntity(form, request);
- initEntity(form, request, object);
-
- User user = userManagerCommon.checkPassword(object.getLoginname(), object.getPassword());
- if(null==user)
- {
- errors.add("password",new ActionMessage("user.missing",object.getPassword()));
- saveErrors(request, errors);
- return mapping.findForward(LOGINVIEW);
- }
-
- SessionUser.saveSession(request,user);
-
-
- try {
- response.sendRedirect(pagefrom);
- return null;
- } catch (IOException e) {
- e.printStackTrace();
- }
-
- return mapping.findForward(INDEX);
- }
第48行的代码就实现了跳转。
分享到:
相关推荐
代码为ASP.NET C#,采用asp.net和jquery异步方式实现。 用户登录采用模态弹出窗口,异步方式验证登录信息,不刷新页面。 用户注册,能检查用户名和密码是否为空,当用户输入用户名时可采用异步方式从数据库提取...
项目需求 访问网站页面时,有的页面需要授权才能访问,这时候就会要求用户登录,跳转到登录页面login.php,怎么实现登录后返回到刚才访问的页面。解决思路1: 在跳转到登录页面之前要将当前访问页面的url保存到...
主要介绍了vue实现未登录跳转到登录页面的方法,主要目的是实现未登录跳转,需要的朋友参考下吧
WPF开发的操作员登录程序,通过mysql数据库验证,跳转到主界面。
使用AndroidQQ登录。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
主要介绍了用Python实现web端用户登录和注册功能的教程,需要的朋友可以参考下
但是这二维码还有一个需求就是,用户已经下载了这个app,当用户打开app进入到注册页面时,再次扫描这个二维码时,自动填写邀请码进行注册。那么该如何实现,细节就不说了,直接上代码。 使用js实现,其实代码非常...
而对于某些功能页面,会尝试获取本地存储中的token进行判断,存在则可进入,否则跳到登录页或弹出登录框。 而在vue单页中,我们可以通过监控route对象,从中匹配信息去决定是否验证token,然后定义后续行为。 具体...
而对于开发工程师来说,把这几个页面实现了并实现数据的闭环处理,一个app 的框架也就大致实现了。一般的我们关注的几个页面如下:(专业词汇是否这样请指教) 引导页面(Guide page/onBoarding,好像国内外称呼不...
基于python opencv人脸识别的签到系统前言先看下效果实现的功能开始准备页面的构建功能实现代码部分总结 前言 一个基于opencv人脸识别和TensorFlow进行模型训练的人脸实时签到系统,作者某...点击注册会跳到注册页面进
<br>此版本包含注册文件和简体中文语言安装包 <br>Enhancements in PL/SQL Developer 7.1.5 ====================================== - Fixed some access violations - Inserting a record in the ...
<br>此版本包含注册文件和简体中文语言安装包 <br>Enhancements in PL/SQL Developer 7.1.5 ====================================== - Fixed some access violations - Inserting a record in the ...
Android实现一个简易版本的购物车小...1、用户注册、用户登录。 2、商品、购物车列表 (2)android 1、ViewPager2 + Fragment实现页面的切换。 2、SQLite数据库、基础组件的使用。 3、shape和selector修饰组件样式。
前段时期一直使用三层来写从页面对数据库的增删改查,今天用hibernate框架来实现从...1、用户能够注册,2、注册成功后直接跳到登录页面,3、登录成功后直接跳到对公司、人员的增删改查, 4、要有对人员界面的分页功能
<br>此版本包含注册文件和简体中文语言安装包 <br>Enhancements in PL/SQL Developer 7.1.5 ====================================== - Fixed some access violations - Inserting a record in the ...
本次实验主要是显式Intent的使用方法以及如何通过显式Intent在不同的Activity之间实现跳需要注意的: - 显式Intent是指明了跳转目标的Intent对象。可以通过指明目标Activity的包名、类名或Intent的构造函数等方式来...
读者可以注册登录,登录时会判断账号类型再分别跳到各自对应的页面,读者可以查找,借阅,还书,查看历史借阅记录,修改个人资料,密码。 管理员可以修改添加图书,修改添加读者,修改添加分类,管理借阅信息等等...
这是一套完整的web前端旅游页面, 一共7个页面, 并且在登录、注册时具有js表单校验, 页面之间实现了跳转。
本文详细介绍了使用Darwin流媒体服务器在Linux下实现视频点播系统的方法和步骤。Darwin流媒体服务器的开放源代码和免费使用特点使其成为了Linux平台上的一个理想选择。我们希望本文能够帮助读者快速搭建视频点播系统...