一、学习案例:关于拦截器的了解,我们肯定不再单纯地编码。我会带大家通过研读源码了解拦截器的实现方式,以及学习struts2的编码方式。
二、案例分析:
a)MethodFilterInterceptor方法拦截器,如果没指定includeMethods,也没指定excludeMethods,则所有方法都会被拦截,即所有方法默认includeMethods。
b)对于指定了includeMethods,而不在其中的方法则不会被拦截。
d)怎么拦截,拦截什么都是由MethodFilterInterceptorUtil.applyMethod(..., ..., ...)指定的。有兴趣的朋友可以分析下其实现逻辑。
c)ActionInvocation中有个addPreResultListener(PreResultListener listener)方法,其含义就是:在action执行之后,在结果渲染之前,在这两个时间点之间会接收通知,通知传入参数对象执行处理。此处使用了观察者模式,如果对观察者模式了解,那么源码就很容易看懂了,大家可以自行查阅,在此就不多讲了。
1、创建监听类使之实现PreResultListener接口,实现beforeResult(..., ...)方法,此处就是填写结果被渲染之前的处理逻辑。
2、在拦截器中通过invocation.addPreResultListener(new 监听类)添加此功能。
3、一般也没什么用,反正我是没用过。有兴趣的朋友自行了解。
三、经验之谈:
a)对于知识点的掌握不是背下了就OK了,背下的东西过一段时间肯定会模糊,以致忘记。我们必须要理解,如果实在看不懂那也别背,敲代码论证,或者百度案例调试,只有这样的进步才会促使我们技术的成长。
四、参考项目:因为我们主要是对源码分析,而项目只是让大家对流程了解和掌握。这一章,我们就不提供项目演示了,其实也没什么可演示的,大家多看看源码,分析下MethodFilterInterceptorUtil和ActionInvocation两个接口即可。
五、每日一乐:
火车站,我紧紧抓住她正要从我的口袋中抽离的手说:“别走。”
她的眼眶一点一点的湿润,颤抖着说:“能不能放手,
能不能给我留下一点美好的回忆,毕竟这是我第一次当小偷。”
最终解释权归爱尚合伙人(www.23hhr.com)所有,转载请注明出处。