Struts快速入門(二)

Struts MVC 語義 <o:p></o:p>

我們從關鍵的Struts抽象概念開始,這是它MVC架構的核心。Struts使用Service to Worker模式實現了MVC模式。[Core]<o:p></o:p>

<o:p> </o:p>

控制器對象<o:p></o:p>

控制器被ActionServlet類所實現。它提供一箇中心位置來處理全部的終端請求。這就爲處理視圖和導航管理的控制層提供了更爲清晰的劃分,把模型訪問和操作留給專門的請求處理器。全部提交的請求被映射到中心處理器,其配置說明如下:<o:p></o:p>

<servlet><o:p></o:p>

<servlet-name>action</servlet-name><o:p></o:p>

<servlet-class>org.apache.struts.action.ActionServlet</servlet-class><o:p></o:p>

</servlet><o:p></o:p>

全部的請求URI*.do的模式存在並映射到這個servlet,其配置如下:<o:p></o:p>

<servlet-mapping><o:p></o:p>

<servlet-name>action</servlet-name><o:p></o:p>

<url-pattern>*.do</url-pattern><o:p></o:p>

</servlet-mapping><o:p></o:p>

一個該模式的請求URI符合如下格式: <o:p></o:p>

              http://www.my_site_name.com/mycontext/actionName.do<o:p></o:p>

上述的映射叫做擴展映射,你也可以聲明路徑映射,使用/*結尾的模式,如下所示:<o:p></o:p>

<servlet-mapping><o:p></o:p>

<servlet-name>action</servlet-name><o:p></o:p>

<url-pattern>/do/*</url-pattern><o:p></o:p>

</servlet-mapping><o:p></o:p>

一個該模式的請求URI符合如下格式:<o:p></o:p>

http://www.my_site_name.com/mycontext/do/action_Name<o:p></o:p>

如上描述的資源邏輯映射允許在配置文件中修改資源映射而不需修改任何應用系統代碼。該映射方案也被用於Mulitplexed Resource Mapping。控制器爲所有的表示層請求提供了一個集中的訪問點。控制器區分每一個提交的請求到RequestProcessor,其輪流發送請求到相關的表單bean進行表單驗證,然後發到一個請求處理器以訪問模型。這個控制器提供的抽象概念減輕了開發者建立公共應用系統服務的困難,如管理視圖、會話及表單數據。開發者支持一個通用機制如錯誤及異常處理,導航,國際化,數據驗證,數據轉換等。<o:p></o:p>

Struts 1.1中,控制器需要在init()方法中讀取配置。該配置控制了架構的行爲,含有URI到請求處理器的映射如使用ActionMapping配置對象,設置信息資源,提供通過插件訪問外部資源等等。事實上,提交請求的處理實際發生在ActionServlet委託所有的輸入請求到RequestProcessor的過程中。<o:p></o:p>

<o:p> </o:p>

發送者對象<o:p></o:p>

       RequestProcessor功能是作爲發送者,按實例化(或複用)一個請求處理器和一個相應的表單bean來處理請求。表單bean和請求處理器中錯誤的建立或異常的拋出被RequestProcessor處理,並影響RequestProcessor的視圖管理功能。表單bean輔助RequestProcessor保存表單數據和/或準備視圖必須的中間模型數據。RequestProcessor使用<action>聲明struts-config.xml文件,如下所示,例如特定請求的請求處理器。<o:p></o:p>

<action-mappings><o:p></o:p>

<action path="/editCustomerProfile"<o:p></o:p>

type="packageName.EditCustomerProfileAction"<o:p></o:p>

name="customerProfileForm"<o:p></o:p>

scope="request"/><o:p></o:p>

</action-mappings><o:p></o:p>

<form-bean name="customerProfileForm"<o:p></o:p>

type="packageName.customerProfileForm"/><o:p></o:p>

       全部提交的請求都被控制器委託到RequestProcessor的對象發送者。RequestProcessor檢查請求URI找到動作標示符,並使用ActionMapping對象中的信息建立一個請求處理器實例,然後調用requesthandler.execute(…)方法。請求處理器中execute(…)方法任務是和應用模型互相作用。請求處理器根據結果返回以一個ActionForward配置對象到RequestProcessorRequestProcessor將用ActionForward對象來通過執行RequestDispatcher.forward(…)response.sendRedirect(…)來調用下一個視圖。

 

<o:p>(待續..)</o:p>

<o:p></o:p> 

<o:p>

<o:p>冰雲翻譯,轉載請告知。</o:p>

<o:p>[email protected]</o:p>

</o:p>

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章