Struts2拦截器
许多的Struts2中的Actio
需要共享一些共用信息或者是模块,有些Actio
需要对输入进行验证,另外一些Actio
或许需要对文件上传之前做一些逻辑处理,又或者一些Actio
需要对重复提交进行保护,还有一些Actiio
需要在页面显示前,初始化下拉框或一些页面组件。Struts2框架使用了I
terceptor拦截器策略使共享这些关心的模块更简单的使用起来。当需要使用到一些映射到Actio
的资源时,框架生成了Actio
对象,但在该Actio
被执行前,执法该Actio
中的方法被另外一个对象拦截了,在Actio
执行时,可能再次被拦截,我们亲切地称此对象为拦截器。理解拦截器拦截器能够在一个Actio
执行前后拦截它。目前的很多框架的核心实现均是基于拦截器。本人说两句,OOP因为拦截器而显得更为精彩,AOP必将成为下一个核心关注点。拦截器可以帮助实现很多公共的内容,其中有重复提交,类型转换,对象初始化,验证,文件上传,页面初始化等等。由于每个拦截器都可以像热插拔的模块,你可以在你的Actio
中正确地去使用需要的拦截器。拦截器可以配置在一个基类的actio
中,自定义的拦截器可以尽量少或者配合框架中的已有的拦截器。所以套用句外国人的话说吧,在一个Actio
执行时,让我们为它再提升一些吧,给Actio
更大
f的舞台更强大的力量吧。如上图所示,Struts2的Actio
被一个或者多个拦截器围绕,所有的用户请求都会被拦截器所拦截,最后交给Actio
处理,处理结果以逻辑视图的方式返回给用户,调用的流程由配置文件来实现。在一些例子中,一个拦截器可以解决像重复提交以及验证失败这样的例子。当然也可以改变一个Actio
在执行前的状态。拦截器可以定义为一个指定执行顺序的链中,在某些情况下,拦截器的顺序非常的重要。