JsP STRUTS1 转跳到登录前页面


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


div>
div>
div>
html:form>
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行的代码就实现了跳转。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值