一、概述
1、struts2是框架,封裝了很多的功能,struts2 里面封裝的功能都封裝在鏈接器里
2、struts2里面封裝了很多功能,有很多攔截器,不是每次這些攔截器都執(zhí)行,每次執(zhí)行默認的攔截器
3、struts2默認攔截器的位置

image.png

image.png
4、攔截器在什么時候執(zhí)行
- 在action的對象創(chuàng)建之后,action方法執(zhí)行之前執(zhí)行
二、底層原理思想
(一)主要原理思想
1、aop思想
aop是面向切面編程,比如:有一個基本功能,要擴展功能,不通過修改源代碼修改功能

image.png
2、責任鏈模式
(1)在java中有很多設(shè)計模式,責任鏈模式是其中一種
(2)責任鏈模式和過濾鏈模式很相似
-
過濾鏈:一個請求有多個過濾器進行過濾,每個過濾器只有做放行才能到下一個過濾器image.png
- 責任鏈模式:執(zhí)行多個操作(添加、修改、刪除),首先執(zhí)行添加后執(zhí)行類似于放行的操作,執(zhí)行修改后執(zhí)行類似于放行的操作,執(zhí)行刪除
(二)aop思想和責任鏈模式如何應用到攔截器里面
1、描述
- 攔截器在action對象創(chuàng)建后,action執(zhí)行之前執(zhí)行
- 在action方法執(zhí)行之前執(zhí)行默認攔截器,執(zhí)行過程aop思想,在action里面并沒有調(diào)用攔截器的方法,使用配置問價方式進行操作
- 在執(zhí)行攔截器時候,執(zhí)行很多攔截器,這個過程使用責任鏈模式
- 假如執(zhí)行三個攔截器,執(zhí)行攔截器1,執(zhí)行攔截器1之后做放行,執(zhí)行攔截器2,執(zhí)行攔截器2之后做放行,執(zhí)行攔截器3,執(zhí)行攔截器3之后做放行,執(zhí)行action中的方法
2、畫圖分析

image.png
3、查看源代碼
-
執(zhí)行actionimage.png
-
創(chuàng)建action對象,使用動態(tài)代理的方式image.png
-
執(zhí)行action的方法image.png
-
執(zhí)行很多攔截器,遍歷執(zhí)行image.png
-
類似于放行的操作方法image.png
三、重要概念
1、過濾器和攔截器的區(qū)別
- 過濾器:理論上可以過濾任意內(nèi)容,比如html,jsp,servelt,圖片路徑
- 攔截器:攔截器只可以攔截action
2、Servlet和action的區(qū)別
- servlet:默認第一次訪問的時候創(chuàng)建,創(chuàng)建一次,單實例對象
- action:每次訪問時創(chuàng)建,創(chuàng)建多次,多實例對象





