1. 程式人生 > >struts2面試題:struts2執行原理&&interceptor與Filter

struts2面試題:struts2執行原理&&interceptor與Filter

struts2執行原理

1、客戶端初始化一個指向servlet容器的請求。 2、這個請求經過一系列的過濾器(到FilterDispatcher初始化dispatch類)。 3、接著FilterDispatcher被呼叫,詢問ActionMapper來決定這個請求是否需要呼叫那個action。 4、如果ActionMapper決定需要呼叫某個 action FilterDispatcher 會把請求交給ActionProxy處理。 5、ActionProxy通過Configuration Manager 詢問框架的配置檔案,找到需要呼叫的action類,生成代理物件。 6、ActionProxy建立ActionInvocation的例項,ActionInvocation例項組裝了代理物件和一個一個的intercepter。 7、ActionInvocation使用命名模式來呼叫,在action呼叫的前後,涉及到呼叫intercepter的呼叫。 8、一旦Action執行完畢,ActionInvocation負責根據struts.xml中配置找到對應的返回結果 。 9、響應的返回是通過我們在web.xml中配置的過濾器。 10、如果ActionContextCleanUp是當前使用的,則FilterDispatch將不會清理sreadlocal ActionContext如果ActionContextCleanUp不使用,則會清理sreadlocals。

interceptor與Filter區別:

1、攔截器是基於java反射機制的,而過濾器是基於函式回撥的。 2、過濾器依賴於servlet容器,而攔截器不依賴於servlet容器。 3、攔截器只能對Action請求起作用,而過濾器則可以對幾乎所有請求起作用。 4、攔截器可以訪問Action上下文、值棧裡的物件,而過濾器不能。 5、在Action的生命週期中,攔截器可以多次呼叫,而過濾器只能在容器初始化時被呼叫一次。