国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

淺析Struts 體系結構與工作原理(3)

2019-11-18 13:47:55
字體:
來源:轉載
供稿:網友

  淺析Struts 體系結構與工作原理(3)

從struts的組件來看Struts 的工作原理

   對于Struts 如何控制、處理客戶請求,讓我們通過對struts的四個核心組件介紹來具體說明。這四個組件就是:ActionServlet、Action Classes,Action Mapping以及ActionFrom Bean。

   1) Struts ActionServlet

   ActionServlet繼續自javax.servlet.http.HttpServlet類,其在Struts 體系結構中扮演的角色失控制器,控制器ActionServlet主要負責將HTTP的客戶請求信息組裝后,根據配置文件的指定描述,轉發到適當的處理器。

   按照Servelt的標準,所有得Servlet必須在web配置文件(web.xml)聲明。同樣,ActoinServlet必須在Web application配置文件(web.xml)中描述。

   當用戶向服務器端提交請求的時候,實際上信息是首先發送到控制器ActionServlet,一旦控制器獲得了請求,其就會將請求信息傳交給一些輔助類(help classes)處理。這些輔助類知道如何去處理與請求信息所對應的業務操作。在Struts中,這個輔助類就是org.apache.struts.action.Action。通常開發者需要自己繼續Aciton類,從而實現自己的Action實例。

   2) Struts Action Classes

   一個Action 類的角色,就像客戶請求動作和業務邏輯處理之間的一個適配器(Adaptor),其功能就是將請求與業務邏輯分開。這樣的分離,使得客戶請求和Action類之間可以有多個點對點的映射。而且Action類通常還提供了其它的輔助功能,比如:認證(authorization)、日志(logging)和數據驗證(validation)。

   3) Struts ActionMapping

   將特定請求映射到特定Action的相關信息存儲在ActionMapping中,ActionServelt將ActionMapping傳送到Action類的perform()方法,Action將使用ActionMapping的findForward()方法,此方法返回一個指定名稱的ActionForward,這樣Action就完成了本地轉發。若沒有找到具體的ActionForward,就返回一個null。

   4) Struts ActionForm Bean

   一個應用系統的消息轉移(或者說狀態轉移)的非持久性數據存儲,是由ActionForm Bean的負責保持的。

   ActionForm的主要功能就是為Action的操作提供與客戶表單相映射的數據(假如在客戶指定的情況下,還包括對數據進行校驗)。Action負責對系統數據狀態的保持,而Action則負責根據業務邏輯的需要,對數據狀態進行修改,在改變系統狀態后,ActionForm則自動的回寫新的數據狀態并保持。

   在ActionForm的使用中,Struts提倡使用到值對象。這樣將客戶或開發人員,對數據狀態與對象狀態能夠更加清楚的理解和使用。

   對于每一個客戶請求,Struts 體系結構在處理ActionForm的時候,一般需要經歷如下幾個步驟:

   ① 檢查Action的映射,確定Action中已經配置了對ActionForm的映射;

   ② 根據name屬性,查找form bean的配置信息;

   ③ 檢查Action的formbean的使用范圍,確定在此范圍下,是否已經有此form bean的實例;

   ④假如當前范圍下,已經存在了此form bean的實例,而是對當前請求來說,是同一種類型的話,那么就重用;

   ⑤ 否則,就重新構建一個form bean的實例;

   ⑥form bean的reset()方法備調用;

   ⑦ 調用對應的setter方法,對狀態屬性賦值;

   ⑧ 假如validatede的屬性北設置為true,那么就調用form bean的validate()方法。

   假如validate()方法沒有返回任何錯誤,控制器將ActionForm作為參數,傳給Action實例的execute()方法并執行。 (全文完)

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 屯门区| 宿迁市| 柞水县| 赤壁市| 甘洛县| 珠海市| 新泰市| 兴城市| 汝南县| 岳阳市| 嵩明县| 台南县| 洞头县| 阿城市| 嘉祥县| 井陉县| 黔南| 云霄县| 东宁县| 台江县| 平利县| 尤溪县| 贡觉县| 五原县| 荥阳市| 栾城县| 泗洪县| 勃利县| 明水县| 龙井市| 金塔县| 涞源县| 三江| 塔城市| 志丹县| 临沂市| 眉山市| 博湖县| 根河市| 富裕县| 东乡|