日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Struts 体系结构与工作原理(图)

發(fā)布時(shí)間:2024/4/14 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Struts 体系结构与工作原理(图) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
?? Struts 體系結(jié)構(gòu)是目前基于java的 web系統(tǒng)設(shè)計(jì)中廣泛使用的mvc構(gòu)架。 基本概念
  
  Struts是Apache 基金會(huì)Jakarta 項(xiàng)目組的一個(gè)Open Source 項(xiàng)目,它采用模型-視圖-控制器(Model-View- Controller,簡(jiǎn)稱(chēng)MVC)模式,能夠很好地幫助java 開(kāi)發(fā)者利用J2EE開(kāi)發(fā)Web應(yīng)用。和其他的java架構(gòu)一樣,Struts 也是面向?qū)ο笤O(shè)計(jì),將MVC模式"分離顯示邏輯和業(yè)務(wù)邏輯"的能力發(fā)揮得淋漓盡致。Structs 框架的核心是一個(gè)彈性的控制層,基于如 Java Servlets,JavaBeans,ResourceBundles與XML等標(biāo)準(zhǔn)技術(shù),以及 Jakarta Commons 的一些類(lèi)庫(kù)。Struts有一組相互協(xié)作的類(lèi)(組件)、Serlvet以及jsp tag lib組成?;趕truts構(gòu)架的web應(yīng)用程序基本上符合JSP Model2的設(shè)計(jì)標(biāo)準(zhǔn),可以說(shuō)是一個(gè)傳統(tǒng) MVC設(shè)計(jì)模式的一種變化類(lèi)型。
  
  Struts有其自己的控制器(Controller),同時(shí)整合了其他的一些技術(shù)去實(shí)現(xiàn)模型層(Model)和視圖層(View)。在模型層,Struts可以很容易的與數(shù)據(jù)訪(fǎng)問(wèn)技術(shù)相結(jié)合,如 JDBC / EJB ,以及其它第三方類(lèi)庫(kù),如 Hibernate / iBATIS ,或者 Object Relational Bridge(對(duì)象關(guān)系橋)。在視圖層,Struts能夠與JSP,包括 JSTL 與 JSF,以及 Velocity 模板,XSLT 與其它表示層技術(shù)。
  
  Struts 為每個(gè)專(zhuān)業(yè)的 Web 應(yīng)用程序做背后的支撐,幫助為你的應(yīng)用創(chuàng)建一個(gè)擴(kuò)展的開(kāi)發(fā)環(huán)境。
Struts的體系結(jié)構(gòu)與工作原理
  
  MVC即Model-View-Controller的縮寫(xiě),是一種常用的設(shè)計(jì)模式。MVC 減弱了業(yè)務(wù)邏輯接口和數(shù)據(jù)接口之間的耦合,以及讓視圖層更富于變化。MVC的工作原理,如下圖1所示:
  
圖1

  Struts 是MVC的一種實(shí)現(xiàn),它將 Servlet和 JSP 標(biāo)記(屬于 J2EE 規(guī)范)用作實(shí)現(xiàn)的一部分。Struts繼承了MVC的各項(xiàng)特性,并根據(jù)J2EE的特點(diǎn),做了相應(yīng)的變化與擴(kuò)展。Struts的體系結(jié)構(gòu)與工作原理如下圖2所示:
  
圖2

  從圖2中我們可以知道,Struts的體系結(jié)構(gòu)包括模型(Model),視圖(View)和控制器(Controller)三部分。
  
  下面讓我們從MVC角度來(lái)看看struts的體系結(jié)構(gòu)(Model 2)與工作原理:
  
  1)模型(Model)
  
  在Struts的體系結(jié)構(gòu)中,模型分為兩個(gè)部分:系統(tǒng)的內(nèi)部狀態(tài)和可以改變狀態(tài)的操作(事務(wù)邏輯)。內(nèi)部狀態(tài)通常由一組Actinform Bean表示。根據(jù)設(shè)計(jì)或應(yīng)用程序復(fù)雜度的不同,這些Bean可以是自包含的并具有持續(xù)的狀態(tài),或只在需要時(shí)才獲得數(shù)據(jù)(從某個(gè)數(shù)據(jù)庫(kù))。大型應(yīng)用程序通常在方法內(nèi)部封裝事務(wù)邏輯(操作),這些方法可以被擁有狀態(tài)信息的bean調(diào)用。比如購(gòu)物車(chē)bean,它擁有用戶(hù)購(gòu)買(mǎi)商品的信息,可能還有checkOut()方法用來(lái)檢查用戶(hù)的信用卡,并向倉(cāng)庫(kù)發(fā)定貨信息。 小型程序中,操作可能會(huì)被內(nèi)嵌在Action類(lèi),它是struts框架中控制器角色的一部分。當(dāng)邏輯簡(jiǎn)單時(shí)這個(gè)方法很適合。 建議用戶(hù)將事務(wù)邏輯(要做什么)與Action類(lèi)所扮演的角色(決定做什么)分開(kāi)。
  
  2)視圖(View)
  
  視圖主要由JSP建立,struts包含擴(kuò)展自定義標(biāo)簽庫(kù)(TagLib),可以簡(jiǎn)化創(chuàng)建完全國(guó)際化用戶(hù)界面的過(guò)程。目前的標(biāo)簽庫(kù)包括:Bean Tags、HTML tags、Logic Tags、Nested Tags 以及Template Tags等。
  
  3)控制器(Controller)
  
  在struts中,基本的控制器組件是ActionServlet類(lèi)中的實(shí)例servelt,實(shí)際使用的servlet在配置文件中由一組映射(由ActionMapping類(lèi)進(jìn)行描述)進(jìn)行定義。對(duì)于業(yè)務(wù)邏輯的操作則主要由Action、ActionMapping、ActionForward這幾個(gè)組件協(xié)調(diào)完成的,其中Action扮演了真正的業(yè)務(wù)邏輯的實(shí)現(xiàn)者,ActionMapping與ActionForward則指定了不同業(yè)務(wù)邏輯或流程的運(yùn)行方向。struts-config.xml 文件配置控制器。
  
  Struts體系結(jié)構(gòu)中的組件
  
圖3

  上圖3顯示了 ActionServlet (Controller)、Actionform (form State) 和 Action (Model Wrapper) 之間的最簡(jiǎn)關(guān)系。
  體系結(jié)構(gòu)中所使用的組件如下表:
  ActionServlet  控制器
  ActionClass   包含事務(wù)邏輯
  Actionform   顯示模塊數(shù)據(jù)
  ActionMapping  幫助控制器將請(qǐng)求映射到操作
  ActionForward  用來(lái)指示操作轉(zhuǎn)移的對(duì)象
  ActionError   用來(lái)存儲(chǔ)和回收錯(cuò)誤
  Struts標(biāo)記庫(kù)  可以減輕開(kāi)發(fā)顯示層次的工作   .NET中如何使用Struts的設(shè)想 1)模型(Model)
  
   這里寫(xiě)業(yè)務(wù)層。
  2)視圖(View)
  
  視圖當(dāng)然指的是.apsx文件。
  
  3)控制器(Controller) 這里是一個(gè)轉(zhuǎn)向控制器,由xml配置完成,就像真正的struts一樣。

這里提的是一個(gè)簡(jiǎn)化的,精煉struts思想的.net版本使用方法。

例子如下:

一個(gè)用戶(hù)注冊(cè)系統(tǒng),用戶(hù)通過(guò)網(wǎng)頁(yè)輸入相關(guān)信息:注冊(cè)ID號(hào),密碼,EMAIL,若注冊(cè)成功,則返回成功提示信息,反之出現(xiàn)注冊(cè)失敗提示信息。

注冊(cè)頁(yè)面:reguser.aspx

配置文件:  Struts-config.xml:
  <Struts-config>
  
  <forward name="failure" path="/ messageFailure.aspx"/>
  
  <forward name="success" path="/ messageSuccess.aspx"/>

?????? </Struts-config>

核心代碼:

如果,注冊(cè)成功,轉(zhuǎn)向“success”,而“success”是什么頁(yè)面由配置文件決定;這樣就分離了view(界面層)和Controller(控制層),有業(yè)務(wù)層(Model)由控制層來(lái)訪(fǎng)問(wèn),這樣界面層就可以專(zhuān)心于其美工設(shè)計(jì)。也許你會(huì)說(shuō)這只不過(guò)是個(gè)頁(yè)面導(dǎo)航。

關(guān)于頁(yè)面導(dǎo)航,我認(rèn)為那將是今后的一個(gè)發(fā)展方向,事實(shí)上,這樣做,使系統(tǒng)的脈絡(luò)更加清晰。通過(guò)一個(gè)配置文件,即可把握整個(gè)系統(tǒng)各部分之間的聯(lián)系,這對(duì)于后期的維護(hù)有著莫大的好處。尤其是當(dāng)另一批開(kāi)發(fā)者接手這個(gè)項(xiàng)目時(shí),這種優(yōu)勢(shì)體現(xiàn)得更加明顯。
?

轉(zhuǎn)載于:https://www.cnblogs.com/hliq/archive/2007/06/20/2087273.html

總結(jié)

以上是生活随笔為你收集整理的Struts 体系结构与工作原理(图)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。