亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

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

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

2019-11-18 12:54:57
字體:
來源:轉載
供稿:網友

  基本概念
  
  Struts是Apache 基金會Jakarta 項目組的一個Open Source 項目,它采用MVC模式,能夠很好地幫助java 開發者利用J2EE開發Web應用。和其他的java架構一樣,Struts 也是面向對象設計,將MVC模式"分離顯示邏輯和業務邏輯"的能力發揮得淋漓盡致。StrUCts 框架的核心是一個彈性的控制層,基于如 Java Servlets,JavaBeans,ResourceBundles與xml等標準技術,以及 Jakarta Commons 的一些類庫。Struts有一組相互協作的類(組件)、Serlvet以及jsp tag lib組成?;趕truts構架的web應用程序基本上符合JSP Model2的設計標準,可以說是一個傳統 MVC設計模式的一種變化類型。
  
  Struts有其自己的控制器(Controller),同時整合了其他的一些技術去實現模型層(Model)和視圖層(View)。在模型層,Struts可以很輕易的與數據訪問技術相結合,如 JDBC / EJB ,以及其它第三方類庫,如 Hibernate / iBATIS ,或者 Object Relational Bridge(對象關系橋)。在視圖層,Struts能夠與JSP,包括 JSTL 與 JSF,以及 Velocity 模板,XSLT 與其它表示層技術。
  
  Struts 為每個專業的 Web 應用程序做背后的支撐,幫助為你的應用創建一個擴展的開發環境。
  
  Struts的體系結構與工作原理
  
  MVC即Model-View-Controller的縮寫,是一種常用的設計模式。MVC 減弱了業務邏輯接口和數據接口之間的耦合,以及讓視圖層更富于變化。MVC的工作原理,如下圖1所示:
  
 淺析Struts 體系結構與工作原理(圖)(圖一)

  
圖1

  
  Struts 是MVC的一種實現,它將 Servlet和 JSP 標記(屬于 J2EE 規范)用作實現的一部分。Struts繼續了MVC的各項特性,并根據J2EE的特點,做了相應的變化與擴展。Struts的體系結構與工作原理如下圖2所示:
  
 淺析Struts 體系結構與工作原理(圖)(圖二)

  
圖2

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

  
圖3

  
  上圖3顯示了 ActionServlet (Controller)、Actionform (form State) 和 Action (Model Wrapper) 之間的最簡關系。
  體系結構中所使用的組件如下表:
  ActionServlet  控制器
  ActionClass   包含事務邏輯
  Actionform   顯示模塊數據
  ActionMapping  幫助控制器將請求映射到操作
  ActionForward  用來指示操作轉移的對象
  ActionError   用來存儲和回收錯誤
  Struts標記庫  可以減輕開發顯示層次的工作
  
  Struts配置文件:struts-config.xml
  
  Struts配置文件struts-config.xml,我們默認可以在目錄WEB-INFstruts-config.xml找到這個文件。文件的配置包括全局轉發、ActionMapping類、Actionform bean 和JDBC數據源四個部分。
  
  1)配置全局轉發
  
  全局轉發用來在JSP頁之間創建邏輯名稱映射。轉發都可以通過對調用操作映射的實例來獲得,例如:NuW=mactionMappingInstace.findForward("logicalName");
  
  全局轉發的例子:
 ?。糶lobal-forwards>
 ?。糵orward name="bookCreated" path="/BookView.jsp"/>
 ?。?global-forwards>
  
  屬性   描述
  Name   全局轉發的名字
  Path   與目標URL的相對路徑
  
  2)配置ActionMapping
  ActionMapping對象幫助進行框架內部的流程控制,它們可將請求URI映射到Action類,并且將Action類與Actionform bean相關聯。ActionServlet在內部使用這些映射,并將控制轉移到特定Action類的實例。所有Action類使用perform()方法實現特定應用程序代碼,返回一個ActionForward對象,其中包括響應轉發的目標資源名稱。例如:
  
  <action-mappings>
 ?。糰ction path="/createBook" type="BookAction" name="bookform" scope="request" input="/CreateBook.jsp">
  </action>
 ?。糵orward name="failure" path="/CreateBook.jsp"/>
 ?。糵orward name="cancel" path="/index.jsp"/>
 ?。?action-mappings>
  
  屬性           描述
  Path        Action類的相對路徑
  Name        與本操作關聯的Action bean的名稱
  Type        連接到本映射的Action類的全稱(可有包名)
  Scope        Actionform bean的作用域(請求或會話)
  PRefix       用來匹配請求參數與bean屬性的前綴
  Suffix       用來匹配請求參數與bean屬性的后綴
  attribute      作用域名稱。
  className      ActionMapping對象的類的完全限定名默認的是
  org.apache.struts.action.ActionMapping
  input        輸入表單的路徑,指向bean發生輸入錯誤必須返回的控制
  unknown       設為true,操作將被作為所有沒有定義的ActionMapping的URI的默認操作
  validate      設置為true,則在調用Action對象上的perform()方法前, ActionServlet將調用Actionform bean的validate()方法來進行輸入檢查
  通過<forward>元素,可以定義資源的邏輯名稱,該資源是Action類的響應要轉發的目標。
  屬性               描述
  Id ID
  ClassName           ActionForward類的完全限定名,默認是
  org.apache.struts.action.ActionForward
  Name             操作類訪問ActionForward時所用的邏輯名
  Path             響應轉發的目標資源的路徑
  redirect           若設置為true,則ActionServlet使用sendRedirec方法來轉發資源
  3)配置Actionform Bean
  ActionServlet使用Actionform來保存請求的參數,這些bean的屬性名稱與HTTP請求參數中的名稱相對應,控制器將請求參數傳遞到Actionform bean的實例,然后將這個實例傳送到Action類。例子:
  <form-beans>
  <form-bean name="bookform" type="Bookform"/>
 ?。?form-beans>
  屬性               描述
  Id ID
  className       Actionform bean的完全限定名,默認值是org.apache.struts.action.ActionformBean
  Name               表單bean在相關作用域的名稱,這個屬性用來將bean與ActionMapping進行關聯
  Type          類的完全限定名
  4)配置JDBC數據源
  用<data-sources>元素可以定義多個數據源:
  屬性        描述
  Id         ID
  Key         Action類使用這個名稱來尋找連接
  Type        實現JDBC接口的類的名稱
  
  下面屬性需要<set-property>元素定義,在Struts 1.1版本中已不在使用,但你可用<data-source>元素。例如:
 ?。糳ata-sources>
  <data-source id="DS1" key="conPool" type="org.apache.struts.util.GenericDataSource"
 ?。約et-property id="SP1" autoCommit="true" descr  driverClass="org.test.mm.MySQL.Driver" maxCount="4"
  minCount="2" url="jdbc:mysql://localhost/test" user="struts" passWord="ghq123" />
 ?。糳ata-source/>
  </data-sources>
  
  屬性     描述
  desciption 數據源的描述
  autoCommit 數據源創建的連接所使用的默認自動更新數據庫模式
  driverClass 數據源所使用的類,

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
精品久久久久久亚洲国产300| 久久精品国产亚洲精品2020| 中文字幕在线看视频国产欧美在线看完整| 中文字幕欧美日韩va免费视频| 国产精品91视频| 美女扒开尿口让男人操亚洲视频网站| 欧美理论片在线观看| 国产精品777| 精品中文字幕视频| 国产日韩在线观看av| 激情成人在线视频| 色综合久久天天综线观看| 久久全国免费视频| 深夜福利91大全| 国模吧一区二区| 欧美精品制服第一页| 久久久亚洲成人| 91大神在线播放精品| 国产午夜精品一区二区三区| 久久久久久久久国产精品| 亚洲在线观看视频网站| 欧美成人免费小视频| 中文字幕欧美专区| 亚洲另类图片色| 亚洲精品91美女久久久久久久| 国产免费一区二区三区在线能观看| 精品福利在线看| 91香蕉国产在线观看| 欧美激情一级精品国产| 久久久久久久久久久免费精品| 91中文在线视频| 狠狠色噜噜狠狠狠狠97| 国产不卡在线观看| 91精品久久久久久| 国产精品久久久久久久久久99| 久久久久久尹人网香蕉| 高清亚洲成在人网站天堂| 欧美激情视频在线免费观看 欧美视频免费一| 亚洲免费伊人电影在线观看av| 欧美黄色小视频| 理论片在线不卡免费观看| 性欧美长视频免费观看不卡| 日韩电影中文字幕在线观看| 亚洲欧洲午夜一线一品| 97视频在线观看免费高清完整版在线观看| 国产精品丝袜久久久久久不卡| 国产日韩欧美夫妻视频在线观看| 国产精品一二三在线| 亚洲免费一在线| 欧美日韩中文字幕综合视频| 色婷婷**av毛片一区| 庆余年2免费日韩剧观看大牛| 亚洲精品白浆高清久久久久久| 91精品久久久久| 国产日韩精品视频| 久久久久久综合网天天| 日韩在线中文字幕| 欧美在线观看一区二区三区| 性色av一区二区三区| 97视频免费观看| 最近2019年中文视频免费在线观看| 欧美日韩在线免费| 91精品啪在线观看麻豆免费| 欧美网站在线观看| 日韩久久免费视频| 亚洲欧美日韩中文在线| 午夜精品理论片| 97av在线视频免费播放| 日韩视频免费中文字幕| 欧美色图在线视频| 欧美成人全部免费| 亚洲国产日韩欧美综合久久| 97精品国产91久久久久久| 久久男人av资源网站| 日韩av在线免费看| 国产91精品视频在线观看| 国产视频亚洲精品| 91黄色8090| 国产精品一区av| 亚洲色图第一页| 国产精品国产自产拍高清av水多| 亚洲成人精品久久久| 亚洲成人三级在线| 亚洲va码欧洲m码| 亚洲综合自拍一区| 日韩资源在线观看| 97人洗澡人人免费公开视频碰碰碰| 亚洲黄页视频免费观看| 欧美亚洲国产视频| 欧美一级淫片播放口| 欧美第一黄色网| 国产成人精品综合| 国产三级精品网站| 成人网在线免费观看| 影音先锋日韩有码| 日韩高清电影免费观看完整版| 国内精品久久久久伊人av| 国产精品在线看| 亚洲国产成人爱av在线播放| 亚洲成人黄色网| 久久久噜噜噜久久| 美女性感视频久久久| 国产日韩av高清| 国产精品69精品一区二区三区| 欧美电影免费观看| 亚洲欧美国产一本综合首页| 91免费精品视频| 最近中文字幕mv在线一区二区三区四区| 色与欲影视天天看综合网| 日本一区二三区好的精华液| 亚洲第一级黄色片| 成人欧美一区二区三区黑人| 精品亚洲一区二区三区四区五区| 亚洲激情视频在线| 日韩有码在线电影| 日韩精品在线观看网站| 亚洲国产福利在线| 欧洲午夜精品久久久| 中国日韩欧美久久久久久久久| 欧美大尺度激情区在线播放| 久热精品视频在线| 国产精品久久久久影院日本| 68精品国产免费久久久久久婷婷| 日本国产精品视频| 精品av在线播放| 久久久爽爽爽美女图片| 九九久久精品一区| 国产精品影院在线观看| 一区二区国产精品视频| 国产精品户外野外| 国语自产精品视频在线看一大j8| 超碰日本道色综合久久综合| 视频一区视频二区国产精品| 欧美激情一区二区三区成人| 国产精品私拍pans大尺度在线| 米奇精品一区二区三区在线观看| 色午夜这里只有精品| 欧美精品九九久久| 最近更新的2019中文字幕| 国产精品久久国产精品99gif| 国产福利精品在线| 久久久久久久电影一区| 成人免费视频在线观看超级碰| 成人黄色生活片| 欧美尺度大的性做爰视频| 国产日韩精品电影| 成人国产精品久久久| 亚洲福利影片在线| 97在线视频免费| 96pao国产成视频永久免费| 日韩精品在线免费| 中文字幕亚洲情99在线| 欧美激情精品久久久久久黑人| 国产精品久久久久91| 欧美日韩亚洲精品一区二区三区| 91久久久久久久久久久| 91精品国产高清自在线| 亚洲xxx大片| 成人激情视频在线观看| 色樱桃影院亚洲精品影院| 国产精品久久av| 国产精品91一区| 国产精品吹潮在线观看| 在线精品视频视频中文字幕|