Struts學習筆記
一、Controller(控制器) Struts中的控制器包括三個組件:ActionServlet類、Action類、Plugins以及RequestProcesser。 1.ActionServlet類: ◆ 處理過程: org.apache.struts.action.ActionServlet類是Struts應用程序的核心。它是處理客戶端請求和決定哪一個Action類來處理每個接收到的請求的最主要的控制器組件。它擔當著Action工廠類的角色去創建一個指定的Action類。事實上,它也就是繼承于HttpServlet類的一個Servlet類。它實現了HttpServlet生命周期中的所有方法,如:init(),doGet(),doPost(),destroy()。當ActionServlet接收到請求之后,它的執行步驟如下: ① doGet()或者doPost()方法接收請求,然后調用ActionServlet類的process()方法。Process()方法會返回一個當前的RequestProcessor類的實例對象。然后調用RequestProcessor類的process()方法。而實際為當前請求提供處理服務的就是這個process()方法。所有的一切都是在這里完成的。 ② RequestProcessor.process()方法會從struts-config.xml文件中將<form-bean>的name屬性與<action>中的name屬性對應起來,從而找到相關的ActionForm類的類名稱 ③ 到實例池中找一個ActionForm類的實例。將它的數據成員與請求的值對應起來。 ④ 調用ActionForm類的validate()方法,檢查提交數據的有效性。 ⑤ 從<action>中接收到Action類的類名稱。創建一個Action類,然后調用Action類的execute()方法。當Action類返回一個ActionForward類的實例之后,控制權再次交給ActionServlet。 ⑥ ActionServlet則forward到指定的target進行處理。至此ActionServlet對request的處理完畢。 ◆ 擴展ActionServlet類: 如果想寫自己的ActionServlet類,則一定要繼承自org.apache.struts.action.ActionServlet類,并且按下面的四個步驟進行: ① 創建一個繼承自org.apache.struts.action.ActionServlet類的類。 ② 實現自定義的商業邏輯方法。 ③ 編譯這個類,并且將它放到Web 應用程序的類路徑中 ④ 修改web.xml文件中的<servlet>元素中的相關設置。 ◆ 配置ActionServlet:見“web.xml配置文件”一文。 2.Action類: 這是Struts控制器的第二個組件,Action類在每一個應用系統中都必須被擴展。下面看一看Action中重要的方法: ① execute()方法:這個方法是必須要重寫的方法。Action類中實現了兩個execute()方法,一個接受Http請求,一個不是。 ◆擴展Action類 ① 創建一個繼承于Action的類 ② 實現execute()方法和自己的商業邏輯 ③ 在struts-config.xml文件中配置<Action-mappings />元素 在struts-config.xml中配置Action類的參數,請參考“struts-config配置文件講解”。
|