jfinal拦截器Interceptor解析

本文涉及的产品
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: jfinal拦截器Interceptor解析

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


原理介绍


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

image.png

image.png


服务端


package com.hc.jf.interceptor;
import com.jfinal.aop.Interceptor;
import com.jfinal.aop.Invocation;
import com.jfinal.core.Controller;
public class DealsInterceptor implements Interceptor {
    @Override
    public void intercept(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的官方帮助文档。


前端


<a href="${ctx}/project" class="btn_publish" target="ajaxTodo" callback="ajaxDone"></a>

1

注意:

1. 发布项目的target

2. callback


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


function ajaxDone(json) {
    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();
        }
    }
}


相关文章
|
监控 Java 数据库连接
深入解析Java中的MyBatis Plus注解 @InterceptorIgnore:优雅控制拦截器行为
拦截器是在数据库操作过程中执行的一种功能扩展机制,可以用于实现数据过滤、性能监控等功能。MyBatis Plus作为一款优秀的ORM框架,提供了注解 `@InterceptorIgnore`,使开发者能够更加灵活地控制拦截器的行为,从而实现更细粒度的拦截。本文将详细介绍 `@InterceptorIgnore` 注解的用法及其在持久层开发中的应用。
6972 0
|
SQL XML 设计模式
Mybatis拦截器执行过程解析
Mybatis拦截器执行过程解析
Mybatis拦截器执行过程解析
|
Java
Struts拦截器解析
Struts拦截器解析
100 0
|
XML 前端开发 Java
Spring 源码解析 | Spring MVC 拦截器
在项目开发过程中我们可能与这样的需求:需要拦截用户的特定浏览权限,比如对于一些公开页面不需要访问权限,对于一些特定的页面需要登录后才能访问。对于这个场景我们通常可以通过拦截器的方式来进行处理。
172 0
|
调度 容器
SpringMVC源码解析之AsyncHandlerInterceptor异步的处理器拦截器
SpringMVC源码解析之AsyncHandlerInterceptor异步的处理器拦截器
734 0
|
JSON 前端开发 数据格式
jfinal拦截器Interceptor解析
版权声明:欢迎转载,请注明沉默王二原创。 https://blog.csdn.net/qing_gee/article/details/48573657 前言:比如有这样一个场景,当用户未登录时,点击发布项目、投资项目就需要提示用户进行登录,进而弹出登录页面,当用户登录完成后,就可以操作对应的页面。
1139 0
|
12天前
|
前端开发 JavaScript UED
JFinal框架中防止表单重复提交的方法
每种方法都有其优势和局限性。Token机制能提供较为稳定可靠的保护,但增加了服务器端的处理负担。锁定机制在处理并发请求时更有效,但可能导致用户体验的下降。JavaScript客户端控制提供了良好的用户体验,但依赖于客户端的执行环境。在实际应用中,可以根据具体的场景和需求,选择最适合的方法,或者将多种方法组合使用,以达到最佳的效果。
20 10
|
JavaScript 前端开发 Java
JFinal框架单文件、多文件上传详解
版权声明:本文为博主原创文章,如需转载,请标明出处。 https://blog.csdn.net/alan_liuyue/article/details/79386540 简介  ...
2758 0

热门文章

最新文章

推荐镜像

更多