1、概念
拦截器,顾名思义,重点在“拦截”这两个字。意思在某个方法执行之前可以定义一个“拦截器”对这个方法进行拦截,通过拦截器的拦截后,可以允许或拒绝某个方法执行。
通常在众多的MVC框架中,拦截器是相对控制器controller而言的,意义在于可以对某个http请求进行拦截。
在JFinal的体现中,拦截器不仅仅可以对controller控制器拦截,也可以对service层或dao层等任意拦截。如果遇到404错误,将不会经过任何拦截器
2、位置
拦截器在handler之后,controller之前
3、作用
方法拦截,代码重用,通用设置
4、使用(全局)
1.自定义一个interceptor类,实现Interceptor接口。记得在最后调用invoke()方法,否转他最后不会执行controller方法
2.与handler类似,也需要在config中的configInterceptor进行配置,它的作用范围是全局拦截器
5、利用注解实现
1.利用注解@Clear(指定拦截器类名,默认全部拦截器),在controller中设置interceptor无效。可以在方法前使用,也可以在类前使用,即设置拦截器对类中所有action,即类中方法无效。
可以利用数组设置多个拦截器传值,不支持@Clear(class1);@Clear(class2)此类写法
2.利用@Clear后,若类中的某action要经过拦截器处理,可以利用@Before来实现,利用@Before可以无需再config中设置,但是此类设置是局部拦截器
与@Clear类似,也可以利用数组传值,也可以放在类名前