JavaWeb登陆成功后跳转到上一个页面(1)

简介: JavaWeb登陆成功后跳转到上一个页面

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


图文并茂


1.场景1

image.png


image.png


2.场景2

image.png




代码实现


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


全局拦截器

public class LoginInterceptor implements Interceptor {
  private static Logger logger = Logger.getLogger(LoginInterceptor.class);
  @Override
  public 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();
    }
  }
}

注意:


全局拦截器可参照jfinal官方文档添加到config类中。

如果用户没有登录,则跳转到登录页,并且将当前的url路径作为参数传递给form表单,至于form表单怎么获取,请看下个小节。

登录页


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

注意:


action中增加callbackType=forward;

onsubmit中callback函数ajaxDone;

validateCallback函数中将上个小节中传递的参数进行添加;

其余的可参照再谈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;
}
相关文章
|
6月前
|
存储 前端开发 JavaScript
基于JavaWeb实现停车场管理系统
基于JavaWeb实现停车场管理系统
115 1
|
3月前
|
设计模式 Java 关系型数据库
【Java笔记+踩坑汇总】Java基础+JavaWeb+SSM+SpringBoot+SpringCloud+瑞吉外卖/谷粒商城/学成在线+设计模式+面试题汇总+性能调优/架构设计+源码解析
本文是“Java学习路线”专栏的导航文章,目标是为Java初学者和初中高级工程师提供一套完整的Java学习路线。
499 37
|
2月前
|
前端开发 Java 应用服务中间件
Javaweb学习
【10月更文挑战第1天】Javaweb学习
39 2
|
2月前
|
安全 Java Android开发
JavaWeb解压缩漏洞之ZipSlip与Zip炸弹
JavaWeb解压缩漏洞之ZipSlip与Zip炸弹
81 5
|
6月前
|
前端开发 Java 关系型数据库
JavaWeb开发简介
JavaWeb开发简介
68 0
|
3月前
|
缓存 前端开发 Java
【Java面试题汇总】Spring,SpringBoot,SpringMVC,Mybatis,JavaWeb篇(2023版)
Soring Boot的起步依赖、启动流程、自动装配、常用的注解、Spring MVC的执行流程、对MVC的理解、RestFull风格、为什么service层要写接口、MyBatis的缓存机制、$和#有什么区别、resultType和resultMap区别、cookie和session的区别是什么?session的工作原理
|
3月前
|
安全 Java Android开发
JavaWeb解压缩漏洞之ZipSlip与Zip炸弹
JavaWeb解压缩漏洞之ZipSlip与Zip炸弹
130 2
|
4月前
|
开发框架 前端开发 Java
【前端学java】SpringBootWeb极速入门-实现一个简单的web页面01
【8月更文挑战第12天】SpringBootWeb极速入门-实现一个简单的web页面01
83 3
|
3月前
|
SQL JSON JavaScript
JavaWeb基础9——VUE,Element&整合Javaweb的商品管理系统
Vue 指令、生命周期、this和$、vue脚手架进行模块化开发/ElementUI框架、综合案例,element商品列表展示增删改查
JavaWeb基础9——VUE,Element&整合Javaweb的商品管理系统
|
4月前
|
安全 Java 应用服务中间件
【Azure 应用服务】App Service中,为Java应用配置自定义错误页面,禁用DELETE, PUT方法
【Azure 应用服务】App Service中,为Java应用配置自定义错误页面,禁用DELETE, PUT方法
【Azure 应用服务】App Service中,为Java应用配置自定义错误页面,禁用DELETE, PUT方法