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:每次访问的时候创建,可以创建多次(多实例对象)