jfinal拦截器Interceptor解析

前言:比如有这样一个场景,当用户未登录时,点击发布项目、投资项目就需要提示用户进行登录,,进而弹出登录页面,当用户登录完成后,就可以操作对应的页面。那么这种情况,就需要进行权限的拦截,那么使用Interceptor就显得弥足珍贵了。

原理介绍

当用户点击一个操作按钮时,向服务端发起请求,服务端进行信息验证,然后传送回前端信息,前端收到信息后,进行回调函数操作。

服务端package com.hc.jf.interceptor;import com.jfinal.aop.Interceptor;import com.jfinal.aop.Invocation;import com.jfinal.core.Controller;{(Invocation inv) {Controller controller = inv.getController();String username = controller.getSessionAttr(“username”);// 用户如果没有登录,那么就跳转到登录页面if (username == null || username.equals(“”)) {controller.setAttr(“statusCode”, 200);controller.setAttr(“message”, “用户未登录”);// 用户没有登录,则弹出登录确认框controller.setAttr(“show_pop_login”, “show_pop_login”);controller.renderJson();} else {inv.invoke();}}}

拦截器具体怎么使用,就参照jfinal的官方帮助文档。

前端==”ajaxDone”></a>

注意: 1. 发布项目的target 2. callback

服务端检测到没有登录时,会传递一个show_pop_login参数回来,用来提供给回调函数ajaxDone方法来实现弹出登录窗口

{YUNM.ajaxDone(json);if (json[YUNM.keys.statusCode] == YUNM.statusCode.ok || json[YUNM.keys.statusCode] == YUNM.statusCode.info) {// 如果传回来了局部刷新事件,则执行局部刷新if (json.loadPage) {// 如果指定了后调转页面,进行调转$(“#” + json.elementId).load(common.loadPath + json.loadPage + common.viewType);}// 整体刷新if (json.locationUrl) {location.href = json.locationUrl;}if (json.show_pop_login) {show_pop_login();}}}

这样就实现了页面之间的拦截跳转。

结语:文章内容只介绍了本篇相关的方法,你需要参照系列文章进行研究。

画龙画虎难画骨,知人知面不知心。

jfinal拦截器Interceptor解析

相关文章:

你感兴趣的文章:

标签云: