首页
App
&
Coffee
文档
项目
分享
反馈
俱乐部
登录
注册
Intercepter
smileForLife
2019-10-21 13:12
GlobalIntercepter和Intercepter有什么区别
项目:
JFinal
2
评论区
smileForLife
2019-10-21 13:38
Global、Routes、Class、Method其中Global和Rotues具体指的是什么,我的理解是Global包含了控制层以及业务层,Routes就是控制层,这样理解好像说的过去,但又不确定
回复
JFinal
2019-10-21 14:52
说到拦截器,要先了解什么是 action, action 就是 controller 中定义的 public 方法,是接受外部请求的最小单位。 而拦截器会对这些 action 的请求进行拦截器
了解了 action ,拦截器的拦截范围有如下几种:
1:Global 拦截器,拦截所有 action
2:Routes 拦截器,拦截所有在当前 Routes 下添加的所有 Controller 中的所有 action
3:Class 拦截器,拦截当前类里头的 action
4:Method 拦截器,拦截当前 action
以上四种范围的拦截器,拦截的范围是从大小到的,拦截的先后次序是: Global、Routes、Class、Method
这些知识在文档中有相关的说明,并且配有相应的示例代码:
https://www.jfinal.com/doc/4-4
所有拦截器都是一样的,只不过你可以根据拦截的范围将它们配置在不同的地方:
1:在 configInterceptor(Interceptors me) 中添加的是 Global 拦截器
2:在 Routes 中添加的是 Routes 拦截器
3:在 Class 上用 @Before(...) 添加的拦截器是 Class 拦截器
4:在 Method 上用 @Before(...) 添加的拦截器是 Method 拦截器
回复
JFinal
2019-10-21 14:53
在具体使用的时候,这四种范围的拦截器会很符合直觉地去使用,试用一下便知
回复
smileForLife
2019-10-21 15:28
好的,非常感谢
回复
smileForLife
2019-10-21 15:29
@JFinal
好的,非常感谢
回复
JFinal
2019-10-21 15:34
@smileForLife
以上说的都是针对 controller 的 action 上的拦截器
jfinal 还有一种配置在业务层上的拦截器,其范围规则基本一样,注意两个小点:
1:业务层拦截器没有 Routes 范围级别的,因为业务层没有路由的概念
2:业务层的全局拦截器的配置方法为:
configInterceptor(Interceptor me) {
me.addGlobalServiceInterceptor(...);
}
注意看第二条,配置方法名是 :addGlobalServiceInterceptor(...),这个是为了与 action 全局拦截器的配置方法区别开来
回复
smileForLife
2019-10-21 15:48
哦~清晰了
回复
smileForLife
2019-10-21 15:48
@JFinal
感谢大佬
回复
发送
我要反馈
热门反馈
扫码入社