2017-04-24 58 views
0

我的印象是,Struts中的​​方法是當從struts.xml調用動作類時調用的第一種方法。但是當我調試我的代碼在動作類中有一個構造函數時,我看到構造函數首先被執行(我沒有在這裏創建任何實例)。Struts中的動作類執行流程

1)有些人可以解釋一下action類中的執行流程,即在實際執行之前調用哪些方法。

2)我不知道爲什麼構造函數獲取調用

+0

你知道什麼是構造函數嗎? –

+1

正在調用構造函數,因爲構造函數在類是......時被調用,構造。操作是類,是按請求創建的,所以。我想這就是爲什麼。 –

回答

0

Struts的執行行動之前調用了很多東西。但它可以在struts.xml中配置。您可以從this的答案中看到執行操作的請求流程。

內部Struts使用ObjectFactory構建由配置定義的所有對象 。查看更多about ObjectFactory docs 或The Struts 2 Request Flow


構造函數應該有default constructorno-argument constructor,否則將無法構建。有關差異的詳細說明,請參閱Java default constructor

您不必爲您的班級提供任何構造函數,但是您在執行此操作時必須小心。編譯器自動爲任何沒有構造函數的類提供一個無參數,默認構造函數 。 該默認構造函數將調用超類的無參構造函數。在這種情況下,如果 超類沒有無參數構造函數,編譯器會發出抱怨,因此您必須驗證它所做的 。如果你的類沒有顯式超類,那麼它有一個Object的隱式超類,它有一個無參數 構造函數。


方法是通過攔截器在執行該操作之前調用居多。默認攔截器堆棧是defaultStack。它涉及很多功能,在執行操作之前執行。請參閱this答案以獲得有關默認配置的印象。

在動作執行之前調用攔截器。這就像服務請求的 管道一樣。每個人在 之後援引一個。當最後一個攔截器處理完該動作後執行。 要在動作配置中調用哪些攔截器或通過註釋調用 。有關攔截器的詳細說明,請參閱docs