前言:本篇推出“jfinal与bootstrap的登出实战”,旨在介绍如果通过a标签弹出登出确认框,然后发送退出请求到jfinal,然后再刷新页面的做法。主要难点在于1.如果通过a标签的内容弹出登出确认框,2.如何通过a标签刷新对应弹出的页面。

前端技术

1.构建a标签

<a href="${ctx}/mem/logout" target="ajaxTodo" callback="ajaxDone" atitle="你确定要退出吗?" id="user_login_out" style="padding: 0 6px;">退出</a>

注意:
1. target=”ajaxTodo”,指定a标签要通过ajax发起请求。
2. callback=”ajaxDone”,指定a标签回调函数
3. atitle=”你确定要退出吗?”,指定确认信息

2.初始化a标签ajax事件

function initUI(_box) {var $p = $(_box || document);// dwz.ajax.jsif ($.fn.ajaxTodo) {$("a[target=ajaxTodo]", $p).ajaxTodo();}
}

注意:
1. 页面加载完成后执行initUI方法,使target为ajaxTodo的a标签具有指定的ajaxTodo方法。

3.a标签的ajax请求

function ajaxTodo(url, callback) {var $callback = callback;if (!$.isFunction($callback)) {$callback = eval('(' + callback + ')');}var forwardUrl = window.location.href;if (url.indexOf("?") != -1) {url += "&forwardUrl=" + forwardUrl;} else {url += "?forwardUrl=" + forwardUrl;}$.ajax({type : 'POST',url : url,dataType : "json",cache : false,success : $callback,error : YUNM.ajaxError});
}

注意:
1. forwardUrl 记录登出的页面

4.为jquery对象增加ajaxTodo方法

$.fn.extend({ajaxTodo : function() {return this.each(function() {var $this = $(this);$this.click(function(event) {var url = unescape($this.attr("href")).replaceTmById($(event.target).parents(".unitBox:first"));YUNM.debug(url);if (!url.isFinishedTm()) {$.showErr($this.attr("warn"));return false;}var title = $this.attr("atitle");if (title) {$.showConfirm(title, function() {ajaxTodo(url, $this.attr("callback"));});} else {ajaxTodo(url, $this.attr("callback"));}event.preventDefault();});});},
});

5.回调函数

function ajaxDone(json) {YUNM.ajaxDone(json);if (json[YUNM.keys.statusCode] == YUNM.statusCode.ok || json[YUNM.keys.statusCode] == YUNM.statusCode.info) {// 如果指定了后调转页面,进行调转if (json.forwardUrl) {location.href = json.forwardUrl;}}
}

6.弹出weebox确认框

$.showConfirm = function(str, funcok, funcclose) {var okfunc = function() {$.weeboxs.close("yunm_confirm_box");funcok.call();};$.weeboxs.open(str, {boxid : 'yunm_confirm_box',contentType : 'text',showButton : true,showCancel : true,showOk : true,title : '确认',width : 280,type : 'wee',onopen : function() {init_ui_button();},onclose : funcclose,onok : okfunc});
};function init_ui_button() {$("button.ui-button[init!='init']").each(function(i, o) {$(o).attr("init", "init"); // 为了防止重复初始化$(o).ui_button();});}

jfinal技术

    public void logout() {if (getSession().getAttribute("username") != null) {// 清除sessiongetSession().removeAttribute("username");}ajaxDoneSuccess("登出成功!");renderJson();}

增加logout方法。

效果

jfinal与bootstrap的登出实战相关推荐

  1. 前后端分离 Spring Security 对登出.logout()的处理

    前端axios发出的post请求如下 logout() {this.axios.post(this.tools.serverAddr+'/logout').then(function () {this ...

  2. JS组件Bootstrap实现弹出框和提示框效果代码

    前言:对于Web开发人员,弹出框和提示框的使用肯定不会陌生,比如常见的表格新增和编辑功能,一般常见的主要有两种处理方式:行内编辑和弹出框编辑.在增加用户体验方面,弹出框和提示框起着重要的作用,如果你的 ...

  3. CMDB开发之用户登录登出的cookie校验

    django cookie session 我们要写一个cmdb被称为运维资源管理系统,BIM流程管理平台,类似这样的项目,很重要的点,就是用户画像,我们来描述参与业务的主体,和之间的关系.在这样的项 ...

  4. Bootstrap从入门到实战---模态框

    Bootstrap从入门到实战-模态框 <!DOCTYPE html> <html lang="en"> <head><meta char ...

  5. linux 执行程序 注销,Linux登录登出的过程 | Soo Smart!

    最近一直遇到crontab执行脚本和手动执行结果不一样的问题.根据添加的echo语句已经确定crontab能够准时执行任务,可是脚本里的程序不能正确执行.唯一能确定的是环境变量问题,可是即使明确地写上 ...

  6. 命令行客户端MySQL基本命令的使用(登录、登出、数据库操作的SQL语句、表结构的SQL语句、表数据操作的SQL语句)

    1. 登录和登出数据库 登录数据库: 输入下面命令: mysql -uroot -p 说明: -u 后面是登录的用户名  [写成-u root也是可以的] -p 后面是登录密码, 如果不填写, 回车之 ...

  7. CAS 单点登出失效的问题(源码跟踪)

    一.环境说明 服务端:cas-server-3.5.2 客户端:cas-client-3.2.1+spring mvc 说明:服务端与客户端均是走的Https 客户端配置文件: application ...

  8. 1_Linux基础知识及命令————登陆登出及图形化界面的初始化

    正式开始学习Linux,安装的操作系统是CentOS6.5. 本节内容涉及的命令主要有: login, logout, passwd, startx &,startx --:n & 快 ...

  9. 源代码解读Cas实现单点登出(single sign out)功能实现原理

    关于Cas实现单点登入(single sing on)功能的文章在网上介绍的比较多,想必大家多多少少都已经有所了解,在此就不再做具体介绍.如果不清楚的,那只能等我把single sign on这块整理 ...

最新文章

  1. OSS正式支持IPv6公测
  2. SharePoint Error - An unrecognized HTTP response was received when attempting to crawl this item
  3. 敏捷开发:软件与文档
  4. 「日常训练」 Mike and Fun (CFR305D2B)
  5. numpy常用函数(更新中)
  6. python docx表格宽度_RPA手把手——python-docx 设置 word 文档中表格格式
  7. Linux 开机启动
  8. 设计模式1【续】:动态设定行为
  9. mysql 列 随机数_MySQL的指定范围随机数函数rand()的使用技巧
  10. ORA-01476: divisor is equal to zero解决方法
  11. 迅捷路由器FW325R的无线桥接
  12. List集合排序总结
  13. oshi因系统问题报错:IllegalStateException: Unmapped relationship: 7
  14. php支付宝刷脸api,支付宝人脸识别
  15. FBI教你破解身体语言
  16. python查询文章中的高频词汇
  17. 【宋代文学】之《青玉案·元夕》
  18. 计算机工作原理【操作系统和进程】
  19. 常见的四种回归测试分析
  20. c语言完美素数反思,《素数和合数》优秀教学反思

热门文章

  1. 【一起入门NLP】中科院自然语言处理第16课-简明扼要:红到发紫的prompt是什么?【上】
  2. java EE crm代码_基于jsp的小型企业CRM-JavaEE实现小型企业CRM - java项目源码
  3. java 弹幕 原理_Flutter 实现虎牙/斗鱼 弹幕效果
  4. 计算机创新创业项目点子,创新创业项目有哪些(创业点子大全500个)
  5. 非日语专业如何有效学习日语?
  6. 【千峰】网络安全学习笔记
  7. 初识R语言介绍以及常见的问题
  8. 红队攻击:轻松玩转邮件钓鱼
  9. 去除Android状态栏的广告推送
  10. 科技新品 | 索尼最新高级条形音箱;Bose消噪耳塞全新配色;新一代人工智能社交机器人Musio S...