Structs框架

Structs結(jié)構(gòu)

Paste_Image.png

Structs框架結(jié)構(gòu)采用MVC設(shè)計模式瞻佛,同時包含客戶端(client),請求以及業(yè)務(wù)邏輯處理(Business Logic),而MVC模式主要由模型(Model)疮绷、視圖(View)和控制器(controller)三部分組成丰刊。

1.客戶端(Client)

一方面可以通過瀏覽器發(fā)送Http請求恋博,另一方面把Http響應(yīng)的消息在瀏覽器上展示出來粹懒。

2.控制器(Controller)

包括ActionServlet類和RequestProcessor類增热。ActionServlet是MVC實現(xiàn)的控制器部分,是整個框架的核心滔驾,它用來接收用戶的請求谒麦,根據(jù)用戶的請求從模型中獲取用戶所需的數(shù)據(jù),然后選擇合適的視圖來響應(yīng)用戶的請求哆致。
請求的處理通過RequestProcessor類來實現(xiàn)绕德。

3.業(yè)務(wù)邏輯(Business Logic)

Servlet在接收請求后會根據(jù)配置文件中對應(yīng)的關(guān)系,把請求轉(zhuǎn)給指定的Action類來處理摊阀,Action采用適配器設(shè)計模式耻蛇,只是對業(yè)務(wù)進行包裝,真正的業(yè)務(wù)邏輯是由EJB的session bean或普通的Java類來實現(xiàn)胞此。

4.模型(Model)

模型分為兩個部分:
1.系統(tǒng)的內(nèi)部狀態(tài)臣咖。通常由一組Actionform Bean表示,ActionForm封裝了Http請求的數(shù)據(jù)的類和對象豌鹤,它是一個抽象類亡哄,每一個輸入表單表示它的一個子類,配置文件structs-config.xml中保存了Http的請求表單與具體的ActionForm類的映射關(guān)系布疙。
2.可以改變的操作(業(yè)務(wù)邏輯)蚊惯。

5.視圖(View)

就是一個Jsp文件愿卸,沒有業(yè)務(wù)邏輯的處理,也不保存系統(tǒng)的狀態(tài)信息截型,通過一系列標簽把數(shù)據(jù)以瀏覽器能識別的方式展現(xiàn)出來趴荸。
標簽有:Bean Tags、Html tags等等等宦焦。

Structs工作流程

在Structs框架中发钝,控制器主要是ActionServlet,但是對業(yè)務(wù)邏輯處理的操作主要由Action波闹、ActionMapping酝豪、ActionForward等組件協(xié)調(diào)完成,Action是控制邏輯的實現(xiàn)者精堕,ActionMapping和ActionForward指定了不同業(yè)務(wù)邏輯或流程的運行方向孵淘。
在使用structs框架的web應(yīng)用啟動時,會初始化ActionServlet歹篓,并從structs-config.xml配置文件中讀取配置信息瘫证,并把他們存放到ActionMappings對象中,當(dāng)ActionServlet接收到一個請求時庄撮,會執(zhí)行如下流程:

1.檢索和用戶請求匹配的ActionMapping實例背捌,如果不存在,就返回用戶請求路徑無效的信息洞斯。

2.如果ActionForm不存在毡庆,就創(chuàng)建一個ActionForm對象,把客戶提交的表單數(shù)據(jù)保存到ActionForm對象中巡扇。

3.根據(jù)配置信息決定是否需要表單驗證扭仁。如果需要,就調(diào)用ActionForm的validate().

4.如果ActionForm的validate()返回的是null或返回一個不包含ActionMessage的ActionErrors對象厅翔,則說明表單驗證成功。
如果返回是一個或多個ActionMessage的ActionErrors對象搀突,則表面驗證失敗刀闷,此時,ActionServlet將直接把請求轉(zhuǎn)發(fā)給包含客戶提交表單的JSP組件仰迁,在這種情況下甸昏,不會再創(chuàng)建Action對象并調(diào)用excute()。

5.Actionservlet根據(jù)ActionMapping實例包含的映射信息決定將請求轉(zhuǎn)發(fā)給哪個Action徐许。如果對應(yīng)的Action對象不存在施蜜,就創(chuàng)建一個實例,然后調(diào)用Action的excute()雌隅。

6.Action的excute()返回的是一個ActionForward對象翻默,ActionServlet再把客戶請求轉(zhuǎn)發(fā)給ActionForward對象指向的JSP文件缸沃。

7.ActionForward對象指向的JSP組件生成動態(tài)頁面,返回給客戶修械。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末趾牧,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子肯污,更是在濱河造成了極大的恐慌翘单,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,542評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蹦渣,死亡現(xiàn)場離奇詭異哄芜,居然都是意外死亡,警方通過查閱死者的電腦和手機柬唯,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評論 3 394
  • 文/潘曉璐 我一進店門认臊,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人权逗,你說我怎么就攤上這事美尸。” “怎么了斟薇?”我有些...
    開封第一講書人閱讀 163,912評論 0 354
  • 文/不壞的土叔 我叫張陵师坎,是天一觀的道長。 經(jīng)常有香客問我堪滨,道長胯陋,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,449評論 1 293
  • 正文 為了忘掉前任袱箱,我火速辦了婚禮遏乔,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘发笔。我一直安慰自己盟萨,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,500評論 6 392
  • 文/花漫 我一把揭開白布了讨。 她就那樣靜靜地躺著捻激,像睡著了一般。 火紅的嫁衣襯著肌膚如雪前计。 梳的紋絲不亂的頭發(fā)上胞谭,一...
    開封第一講書人閱讀 51,370評論 1 302
  • 那天,我揣著相機與錄音男杈,去河邊找鬼丈屹。 笑死,一個胖子當(dāng)著我的面吹牛伶棒,可吹牛的內(nèi)容都是我干的旺垒。 我是一名探鬼主播彩库,決...
    沈念sama閱讀 40,193評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼袖牙!你這毒婦竟也來了侧巨?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,074評論 0 276
  • 序言:老撾萬榮一對情侶失蹤鞭达,失蹤者是張志新(化名)和其女友劉穎司忱,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體畴蹭,經(jīng)...
    沈念sama閱讀 45,505評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡坦仍,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,722評論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了叨襟。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片繁扎。...
    茶點故事閱讀 39,841評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖糊闽,靈堂內(nèi)的尸體忽然破棺而出梳玫,到底是詐尸還是另有隱情,我是刑警寧澤右犹,帶...
    沈念sama閱讀 35,569評論 5 345
  • 正文 年R本政府宣布提澎,位于F島的核電站,受9級特大地震影響念链,放射性物質(zhì)發(fā)生泄漏盼忌。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,168評論 3 328
  • 文/蒙蒙 一掂墓、第九天 我趴在偏房一處隱蔽的房頂上張望谦纱。 院中可真熱鬧,春花似錦君编、人聲如沸跨嘉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽偿荷。三九已至,卻和暖如春唠椭,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背忍饰。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評論 1 269
  • 我被黑心中介騙來泰國打工贪嫂, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人艾蓝。 一個月前我還...
    沈念sama閱讀 47,962評論 2 370
  • 正文 我出身青樓力崇,卻偏偏與公主長得像斗塘,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子亮靴,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,781評論 2 354

推薦閱讀更多精彩內(nèi)容

  • spring mvc 工作機制(原理): DispatcherServlet主要用作職責(zé)調(diào)度工作馍盟,本身主要用于控制...
    java大濕兄閱讀 1,896評論 5 24
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法茧吊,內(nèi)部類的語法贞岭,繼承相關(guān)的語法,異常的語法搓侄,線程的語...
    子非魚_t_閱讀 31,631評論 18 399
  • 1瞄桨、面向?qū)ο蟮奶卣饔心男┓矫?1.抽象:抽象就是忽略一個主題中與當(dāng)前目標無關(guān)的那些方面,以便更充分地注意與當(dāng)前目標...
    michaelgong閱讀 823評論 0 1
  • (一)Struts云石、Spring唉工、Hibernate、Mybatis框技術(shù) 1.Struts2.0有幾種標簽庫 【...
    獨云閱讀 3,240評論 0 62
  • 如果我有你 我將會和你一起在融融的春日里蒙茸的青草地上躺著曬太陽 在烈日灼灼的夏日傍晚時分的林蔭道上我牽著你的手我...
    北絕閱讀 179評論 5 2