您的位置:首页 > 编程语言 > Java开发

Struts2学习之拦截器机制

2012-02-28 20:46 260 查看
一些资料上都说Struts2框架中,拦截器是基石,许多共嫩的实现都是构建在拦截器的基础之上的,例如文件的上传与下载、国际化、类型转换和数据校验等,且Struts2还提供内建拦截器,例如timer和params等,这些拦截器可完成框架的大部分赶任务。于是对拦截器的机制进行了进一步学习和了解。

拦截是AOP(Aspect-Oriented Programming,面向切面编程)的一种实现策略。如果说面向对象编程将需求功能划分为不同的相对独立的和封装良好的类,病逝他们有着属于自己的行为,依靠继承和多态等来定义彼此的关系,那么面向切面编程则是通过去修功能从不相关的类中分离出来,使得很多类共享一个行为,一旦发生变化,不必修改很多类,只需秀给这个行为即可。Struts2拦截器体系正是应用了AOP设计哲学,可以动态拦截Action调用的对象,开发这只需要提供拦截器的实现类,然后配置在struts.xml文件中就行了。拦截器提供了一种机制,在一个Action前后执行需要的代码,可以在一个Aciton执行前执行,也可以在Action执行之后做一些响应的工作。

工作机制如下:拦截器都是通过代理的方式调用的。

1、请求到大Struts2的ServletDispatcher(Web HTTP请求的调度器),

2、Struts2查找配置文件,并根据配置实例化相对的拦截器对象,然后将这些对象串成一个列表,即拦截器栈;

3、逐个调用拦截器列表list中的拦截器。

注:每个Action都封装在拦截器中,以便于拦截器可以在Action执行之前或之后做回收操作。每个Action既可以将操作交给下面的拦截器,也可以直接退出操作,返回客户已定的视图资源。

拦截器的工作UML序列图如下:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: