JavaWeb登陆成功后跳转到上一个页面,这个标题注定要词不达意,你可能会遇到这样的情形,当点击页面的某个请求时,由于用户未登录,需要跳转到登录页,用户登录成功后,再跳转到上一个页面;还有一种情况,多个页面都有登录按钮,登录成功后需要刷新对应的登录信息。

图文并茂

1.场景1

2.场景2

代码实现

场景1的代码这次重点说明以下,场景2的代码可以参照本系列其他文章再谈ajax局部刷新

全局拦截器

public class LoginInterceptor implements Interceptor {private static Logger logger = Logger.getLogger(LoginInterceptor.class);@Overridepublic void intercept(Invocation inv) {BaseController controller = (BaseController) inv.getController();String lastRequestURL = controller.getRequest().getRequestURL().toString();logger.info("请求地址:" + lastRequestURL);Members loginMem = controller.getSessionAttr("username");// 用户如果没有登录,那么就跳转到登录页面if (loginMem == null || loginMem.equals("")) {try {controller.redirect("/mem/initLogin?forwardURL=" + URLEncoder.encode(lastRequestURL, "UTF-8"));} catch (UnsupportedEncodingException e) {logger.error(e.getMessage());}} else {inv.invoke();}}
}

注意:

  1. 全局拦截器可参照jfinal官方文档添加到config类中。
  2. 如果用户没有登录,则跳转到登录页,并且将当前的url路径作为参数传递给form表单,至于form表单怎么获取,请看下个小节。

登录页

<form class="pop_login_form" action="${ctx}/mem/login?callbackType=forward" method="post"οnsubmit="return validateCallback(this, ajaxDone)">

注意:

  1. action中增加callbackType=forward;
  2. onsubmit中callback函数ajaxDone;
  3. validateCallback函数中将上个小节中传递的参数进行添加;
  4. 其余的可参照再谈ajax局部刷新
function validateCallback(form, callback, confirmMsg) {var $form = $(form);if (!$form.valid()) {return false;}var _submitFn = function() {$.ajax({type : form.method || 'POST',url : addForwardForUrl($form.attr("action")),data : $form.serializeArray(),dataType : "json",cache : false,success : callback || YUNM.ajaxDone,error : YUNM.ajaxError});}if (confirmMsg) {$.showConfirm(confirmMsg, {okCall : _submitFn});} else {_submitFn();}return false;
}
function addForwardForUrl(url) {var locationURL = location.href;// URL中附带了跳转路径var forwardIndex = locationURL.indexOf("forwardURL");if (forwardIndex != -1) {var forwardURL = locationURL.substring(forwardIndex);// 说明已经有了跳转路径if (url.indexOf("?") != -1) {url += "&" + forwardURL;} else {url += "?" + forwardURL;}}return url;
}

注意:

  1. 如此之前拦截器中提供的url就可以作为参数传递给form的提交请求中。

login函数

@Clear({LoginInterceptor.class})public void login() throws UnsupportedEncodingException {logger.info("进行会员登录操作...");// 获取用户名String name = getPara("username");// 获取密码String password = getPara("password");Members mem = Members.me.getMemByUsername(name);if (mem != null) {// 用户不存在// 密码不匹配if (!mem.getStr("password").equals(CipherUtils.generatePassword(password))) {ajaxDoneError("密码不正确!");} else {// 保存sessionsetSessionAttr("username", mem);String forwardURL = getPara("forwardURL");if (forwardURL == null || forwardURL.equals("")) {forwardURL = "/";} else {forwardURL = URLDecoder.decode(forwardURL, "UTF-8");}ajaxDoneSuccess("登录成功!", forwardURL);}} else {ajaxDoneError("用户不存在!");}}

1. login函数中,将forwardurl取出来,作为**登录页**中的callback函数的参数值; 2. 具体ajaxDoneSuccess方法可以参照以下内容

public void ajaxDoneSuccess(String message, String forwardURL) {ajaxDone(200, message, forwardURL);}
protected void ajaxDone(int statusCode, String message, String forwardURL) {// 回调类型if (getAttr("callbackType") == null) {String callbackType = getPara("callbackType");if (callbackType != null && !callbackType.equals("")) {setAttr("callbackType", callbackType);if (callbackType.equals("forward") || callbackType.equals("closeCurrentThenForward")) {String contextPath = getRequest().getContextPath();if (forwardURL.indexOf(contextPath) == -1) {forwardURL = contextPath + forwardURL;}setAttr("forwardURL", forwardURL);}}}renderJson();
}

如果有callbacktype参数,则将forwardurl作为json数据传递到前端的ajaxdone方法中。

ajaxDone方法

function ajaxDone(json) {YUNM.ajaxDone(json);if (json[YUNM.keys.statusCode] == YUNM.statusCode.ok || json[YUNM.keys.statusCode] == YUNM.statusCode.info) {if ("forward" == json.callbackType) {if (json.forwardURL) {location.href = json.forwardURL;}
}

跳转到上一个页面。


  1. 当点击页面的某个请求时,由于用户未登录,需要跳转到登录页,用户登录成功后,再跳转到上一个页面 ↩︎

  2. 还有一种情况,多个页面都有登录按钮,登录成功后需要返回到上一个界面。 ↩︎

JavaWeb登陆成功后跳转到上一个页面相关推荐

  1. java中登陆界面怎么连接到下一个界面啊_JavaWeb登陆成功后跳转到上一个页面

    JavaWeb登陆成功后跳转到上一个页面,这个标题注定要词不达意,你可能会遇到这样的情形,当点击页面的某个请求时,由于用户未登录,需要跳转到登录页,用户登录成功后,再跳转到上一个页面:还有一种情况,多 ...

  2. html登陆成功后跳转页面跳转,怎么设置登录成功后跳转到相应的页面

    想要用angularjs实现的功能是 一进入就是一个登录页面(login.html),如果没有账号密码就注册,登录成功后跳转到相应的页面(shopcart.html) 碰到的问题 1.一进入页面没有显 ...

  3. 登录成功后怎么跳转页面html,怎么设置登录成功后跳转到相应的页面

    想要用angularjs实现的功能是 一进入就是一个登录页面(login.html),如果没有账号密码就注册,登录成功后跳转到相应的页面(shopcart.html) 碰到的问题 1.一进入页面没有显 ...

  4. php 跳转回上一个页面,php跳转回上一个页面

    [摘要] PHP即"超文本预处理器",是一种通用开源脚本语言.PHP是在服务器端执行的脚本语言,与C语言类似,是常用的网站编程语言.PHP独特的语法混合了C.Java.Perl以及 ...

  5. 【ASP.NET】登陆成功后如何跳转到上一个页面

    当用户浏览网页的时候会在某个地方需要用户登陆才能继续浏览,用户登陆之后会自动跳转到刚刚浏览的页面.这个步骤是怎么实现的呢?net小伙在查阅相关资料实践之后终于明白了,其实很简单,先分享给大家吧. 当用 ...

  6. java shiro登录实例_使用Shiro实现登录成功后跳转到之前的页面

    这个问题是之前在做登录注册模块时遇到的需求,如何用户直接访问登录页面,可以控制直接跳到首页,但是如果是用户没有登录直接访问了购物车等需要经过身份认证的页面,或者是因为session超时,用户需要重新登 ...

  7. WinForm登陆成功后跳转到主窗口

    在Program类的Main函数中 LoginFrm loginFrm = new LoginFrm(); loginFrm.ShowDialog(); if (loginFrm.DialogResu ...

  8. 返回上一个页面,并刷新

    适用的范围:退出登录后跳转到上一个页面 PrintWriter out = this.getResponse().getWriter();out.write("<script type ...

  9. SSM框架,ajax实现登陆界面验证和登陆成功后页面跳转问题

    账号.密码和验证码都正确后,使用了ajax实现验证,验证结束后不能像正常一样返回一个字符串,用视图解析器来跳转页面 <!--配置JSP 显示ViewResolver(视图解析器)--> & ...

最新文章

  1. 程序员如何判断是否到了该辞职的时候?以及常用的辞职借口总结
  2. 【原创】项目管理得失经验总结
  3. UWP 显示图片到Image控件
  4. MQ事务消息实现方案
  5. 如何在你的项目中集成 CAP【手把手视频教程】
  6. css 对话框阴影,科技常识:css实现不规则图形的阴影(如对话框)
  7. ZetCode Servlet 教程
  8. Linux操作Oracle(6)——Oracle11g OPatch 打补丁全纪录【Oracle11g windowsX64位环境+OPatch11.2.0.3.28】及资源下载
  9. paip.asp vbs代码的排版格式化
  10. html新浪微博页面练习,js实现新浪微博首页效果
  11. web打印实现几种方法
  12. Compose_23--动画之animateContentSize和Crossfade
  13. 玩游戏计算机虚拟内存怎么设置,多少虚拟内存设置适合玩游戏(多少虚拟内存设置适合)...
  14. flashfxp使用图文教程,flashfxp使用图文教程简单介绍
  15. trueOS能装linux软件,TrueOS 17.12发布下载,一款基于FreeBSD的桌面Linux系统
  16. python six 用途_python之six用法
  17. ct扫描方式有哪些_医学影像技术(医学高级):CT必看题库知识点(考试必看) - 考试题库...
  18. uniapp小程序发布过程中,图片跟音频资源超过200K无法上传
  19. Win10右键菜单“发送到”添加/删除选项的方法
  20. 软著中写源代码60页快速实现方法

热门文章

  1. php 微信二维码设置中间logo
  2. 住房公积金专办员考试多少分及格?考试难不难?
  3. 在WPS表格里制作连接到openGauss的实时刷新报表
  4. 利用VB批量增加行高,解决Excel打印字体显示不全问题
  5. 如何认识和投身 Web 3.0?
  6. CDA携手云网德国公司共同打造数据精英的国际化舞台
  7. 转置矩阵,逆矩阵和倒转置矩阵
  8. 食物语电脑版服务器一直维护,《食物语》进不去解决办法(图文)
  9. 【自学python爬虫】:入门书籍推荐(附资源)
  10. 从零开始学IDA逆向(百度云)