2011-04-27 54 views
11

的基本流程嗯,我想學習Struts的,所以我打算在Struts 1, 開始我想知道的一般流程。需要什麼文件?Struts的

什麼是struts-config.xml的功能? validation.xml中? validation-rules.xml 當你訪問你的JSP頁面,並且一個動作被觸發時,會發生什麼? Action和Form類是做什麼的?當一個動作被觸發時,哪個類首先被調用。

我剛剛下載的表格樣本,而所有這些文件都在第一混亂。我想知道怎麼做才能更好地理解Struts。 d:

回答

32

你應該與Struts的教程,這將使它很容易理解開始。你可以在網上找到很多,特別是Struts 1. Here is a starting point for example

但只是爲了它,這裏是一個高視圖演示

首先,將Struts ActionServlet添加到您的web.xml文件中,並將其配置爲接受匹配某個映射的請求。對於Struts,這是*.do(您可以爲此設置任何內容,*.do僅僅是Struts社區中的一個約定)。

現在,無論何時到達服務器上有這樣一個*.do URL模式發送到ActionServlet。現在

struts-config.xml文件的內容進場。 ActionServletfront controller,它只是分派給其他更適合特定處理的資源。這些特定資源是Action類。

你可以有例如LoginAction必須處理的login.do路徑上到達的請求。在struts-config.xml中指定:login路徑上的所有內容必須發送到LoginAction類。

而且,只要你想,你可以有許多的聲明,對路徑x呼叫XAction,爲y呼叫YAction等等等等

通常,您的客戶端提交的數據到服務器,數據,他輸入到一個HTML表單。您需要在Action課程中處理這些數據。現在輸入ActionForm

ActionForm是Struts框架與來自HTML形式的數據填充的bean。例如,您可以使用諸如formBean.getFoo()之類的對象來代替request.getParameter("foo")

一旦你使用ActionFormAction類做你處理,你再必須存在於一些結果看(順便說一下,Struts是一個MVC框架,所以你必須知道這個兩個東西也)。

視圖通常是JSP文件。當您從Action返回時,您可以通過名稱指定一個「前進」位置(即要指向哪個視圖)。現在信息再次位於struts-config.xml文件中,其中視圖的名稱被映射到JSP位置。

然後,框架將控制轉發給該JSP,JSP呈現數據,然後將數據作爲HTML發送給客戶端(客戶端不再需要直接訪問JSP - 它們必須被Struts框架隱藏)。

在新頁面中,客戶端再次執行一些請求並重復該過程。

那麼,這是關於儘可能高的表現,因爲它可以得到。當然,除此之外還有更多,但在學習Struts時你會發現它們。

至於validator-rules.xmlvalidation.xml,那些使用由Validator框架,你可以integrate with Struts通過使用插件(Struts有插件,您可以使用新的東西添加到它)還添加驗證用戶的輸入。

嗯,就是這樣。你可以在網上找到很多提供更多細節的教程,但希望能幫助你獲得更好的開始。

祝你好運!

8
  1. 當用戶提交了一個jsp頁面。該頁面具有(屬性 )action="login.do"。該集裝箱將致電web.xml。在這 web.xml有兩個部分的servlet和servlet映射
  2. 在servlet映射中,它發現*.do在url-pattern中。如果發現 取servlet的名字。並檢查相應的班級。在 servlet部分。該班級是ActionServlet
  3. ActionServlet是Struts模塊體系結構的控制器。在 具有服務方法的動作servlet。在該方法中,我們創建 RequestPrecessor類的實例
  4. Service(req,res) RequestPrecessor rp = new RequestPrecessor();
  5. 我們稱之爲RequestProcessor類的處理方法,通過 實例rp.process(req,res)
  6. 在請求處理器類有REQ,資源的 參數的過程方法。那麼它在這個類中有1個條件。 該條件返回總是如此。因爲那是虛擬方法。

內部的條件有6個步驟是處理

  1. 創建在Struts- Config.xml一個動作映射的實例。它 將保持動作映射路徑,值,類型 前進,validation=true/falseinput ="*.jsp"等這些[R創建的實例
  2. 然後,它會創建Form類實例之前檢查它的 操作映射和表單名稱的名稱都是巧合的所有細節或者沒有,如果它同它 將創建表單實例
  3. 然後,它會去ActionMapping實例的RIS提或不 validate =true/false如果假時,將不執行這一步否則 它將執行此步驟。
  4. 然後它會創建動作實例
  5. 接下來它會執行四個參數執行方法它會返回 ActionErrors實例。如果它不是空的。它會轉到錯誤頁面 其他明智它會到相應的頁面。否則如果它是空的 如果將進一步並在jsp 視圖中顯示相應的頁面值。這是struts流。
+0

最好解釋.. – 2014-05-09 07:00:41

+0

@Tiny我猜PrepareAndExecuteFilter是新的actionservlet ..這是否正確?如果是的話什麼時候被調用/調用/初始化? – 2014-05-09 07:05:44