Struts2——拦截器原理(AOP、责任链模式)

1、Struts2拦截器概述:

(1)Struts2框架封装中封装了很多功能,这些功能其实都是封装在Struts2的拦截器里面,Struts2里面有很多拦截器,每次不是这些拦截器都执行,每次只执行默认的拦截器。

(2)Struts2默认拦截器的位置:

 (3)拦截器在Action对象创建之后,action的方法执行之前执行。

2、Struts2底层原理:

(1)原理一(AOP思想):

AOP:面向切面(方面)编程,不通过修改源代码的方式来扩展功能。

在上面的登录流程图中,如果在登录成功后要添加用户的权限判断功能,不需要修改源代码。

(2)责任链模式(和过滤链模式思想相似):

过滤链模式:一个请求需要经过多个过滤器,而每个过滤器只有经过放行操作后才能进行下一步操作。

责任链模式:例如执行:添加、删除、修改操作,先执行添加操作,添加操作执行结束之后执行删除操作(类似于过滤链模式中的放行操作),执行删除操作之后执行修改操作。

3、AOP思想和责任链模式在Struts2中的应用:

(1)拦截器在Action对象创建之后,action的方法执行之前执行(在Action方法执行之前执行默认拦截器,执行过程中使用AOP思想,在Action中没有直接调用拦截器的方法,而是使用配置文件的方式进行操作)。

(2)如果拦截器执行过程中有多个拦截器则采用责任链模式进行,如果有三个拦截器,则先执行拦截器一,执行一之后做放行操作,然后执行拦截器二,做放行操作,最后执行拦截器三,放行后,执行Action方法。

4、过滤器和拦截器的区别:

(1)过滤器:过滤器理论上可以过滤任何内容,例如:图片、html、jsp、servlet的路径。

(2)拦截器:拦截器只能拦截Action。

5、servlet和action的区别:

(1)servlet:只在首次访问的时候创建,只创建一次(单实例对象)

(2)action:每次访问的时候创建,可以创建多次(多实例对象)

猜你喜欢

转载自www.cnblogs.com/zhai1997/p/12210231.html
今日推荐