Action類
用來訪問業(yè)務(wù)邏輯類。當(dāng) ActionServlet 從容器接收到一個請求,它使用URI (或者路徑
“path”) 來決定那個Action 將用來處理請求。一個 Action 可以校驗(yàn)輸入,并且訪問業(yè)務(wù)
層以從數(shù)據(jù)庫或其他數(shù)據(jù)服務(wù)中檢索信息。
ActionForm類
為校驗(yàn)輸入或者使用輸入來更新數(shù)據(jù)庫, Action 需要知道什么值被提交上來。它并不是強(qiáng)
制每個Action 都要從請求中抓取這些值,而是由 ActionServlet 將輸入綁定到JavaBean中。
輸入 bean 就是Struts ActionForm 類的子類。ActionServlet 通過查找請求的路徑可以決定使
用哪個ActionForm , Action 也是通過同樣的方法選取的。ActionForm 擴(kuò)展了
org.apache.struts.action.ActionForm 類
每個請求都必須以HTTP 響應(yīng)進(jìn)行應(yīng)答。 通常,Struts Action 并不自行渲染響應(yīng)信息,
而是將請求轉(zhuǎn)發(fā)到其他資源,比如JSP 頁面。Struts 提供一個ActionForward 類,用來將
一個頁面的路徑保存為邏輯名稱。當(dāng)完成業(yè)務(wù)邏輯后,Action 選擇并向Servlet 返回一個
ActionForward。Servlet 然后使用保存在ActionForward 對象中的路徑來調(diào)用頁面完成響
應(yīng)。
Struts 將這些細(xì)節(jié)都綁定在一個ActionMapping 對象中。每個ActionMapping 相對于一個
特定的路徑。當(dāng)某個路徑被請求時,Servlet 就查詢ActionMapping 對象。ActionMapping
對象告訴servlet,哪些個Action,ActionForm,和 ActionForward 將要被本次請求使用。
所有這些細(xì)節(jié),關(guān)于Action, ActionForm, ActionForward, ActionMapping,以及其
它一些東西,都在struts-config.xml 文件中定義。 ActionServlet 在啟動時讀取這個配置文
件,并創(chuàng)建一個配置對象數(shù)據(jù)庫
舉個例子來說,
頁面上如果有以下語句:
<html:form?action="/hello.do">
當(dāng)submit此form時,控制器從配置文件中找<action-mappings>下path="/hello"?的<action>元素
然后根據(jù)此action元素的type屬性找要執(zhí)行的action類文件
比如
<action-mappings>
????<action?path="hello"
????????????type="cn.com.mylu.Hello"
????????????name="Hellofrom"
????????????……
????</action>
其中 cn.com.mylu.Hellofrom?為ActionForm類javabean
???????????cn.com.mylu.Hello 為Action類
??? <form-bean name="Hellofrom" type="cn.com.mylu.Hellofrom">
??? </form-bean>
頁面hello.do----->?action元素的path屬性?------>?action元素的type屬性----->Hello.java---->Hello.java中的execute方法