登录/注册后跳回登录/注册前的页面实现方法
2007-12-19 13:53
633 查看
网站开发中经常会遇到这样的问题,登录后自动转到了首页或者用户管理首页,这样有时候会让用户觉得很不方便,特别是电子商务类的网站,当用于在浏览产品页面时,需要购买,但是只有登录后的用户才能进入购买页面,所以如果当用户登录后进入的不是他登录前的产品浏览页面,他得去重新找,这是非常不友好的。
可以通过request.getHeader("referer");方式来实现登录/注册后返回进入登录或注册页面前的页面
举例:
java 代码
/**
* 进入到登录页面
* @param mapping
* @param form
* @param request
* @param response
* @return
*/
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 代码
/**
* 登录
* @param mapping
* @param form
* @param request
* @param response
* @return
*/
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);
}
// resetToken(request);
// run validation rules on this form
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行的代码就实现了跳转。
可以通过request.getHeader("referer");方式来实现登录/注册后返回进入登录或注册页面前的页面
举例:
java 代码
/**
* 进入到登录页面
* @param mapping
* @param form
* @param request
* @param response
* @return
*/
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 代码
/**
* 登录
* @param mapping
* @param form
* @param request
* @param response
* @return
*/
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);
}
// resetToken(request);
// run validation rules on this form
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行的代码就实现了跳转。
相关文章推荐
- springboot 整合 MongoDB 实现登录注册,html 页面获取后台参数的方法
- 实现页面登录后仍然跳回当前页面
- 织梦系统DedeCMS设定栏目及文档权限登录后跳转到登陆前的页面的实现方法
- 前台ajax重写方法搭配后台filter返回status实现ajax请求跳转登录页面
- ucenter整合uc.php接口,discuz上初次注册会员后,即可实现自动登录的方法
- node.js实现登录注册页面
- 登录页面验证码的简单实现,以及getOutputStream() has already been called for this response异常的解决方法
- 微信第三方登陆,无需注册一键登录,获取用户信息,PHP实现方法.
- Laravel 5.4重新登录实现跳转到登录前页面的原理和方法
- 微信第三方登陆,无需注册一键登录,获取用户信息,PHP实现方法
- eShop电子商城的SSH实现的用户模块(1)登录和注册配置文件和页面关键代码(V...
- JSP作业4 - 使用JSP+JavaBean+Servlet实现用户登录注册页面
- 实验_Struts2国际化 登录页面国际化的两种实现方法
- 局部刷新登录页面的实现方法
- ASP.NET登录注册页面实现
- 重写ajax方法实现异步请求session过期时跳转登录页面
- 完成用户注册、登录页面,实现数据的真实操作。
- 微信第三方登陆,无需注册一键登录,获取用户信息,PHP实现方法.
- jQuery基于ajax实现页面加载后检查用户登录状态的方法
- 利用ajax在index页面自动执行方法并显示相关内容,在执行相关按钮操作(如登录注册)后返回index页面后ajax不执行,无法显示相关内容的问题解决方法之一