<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 9, comments - 5, trackbacks - 0, articles - 2
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    Struts 框架

    Posted on 2007-11-10 17:25 代林 閱讀(2147) 評論(2)  編輯  收藏
    Struts 運行環境

    1.1 Struts 1.0 和1.1版本

    當前主要有兩個版本,struts 1.0 release 和 struts 1.1 beta 3。Struts 1.0 和1.1差別很大,主要有兩點:

    • Struts 1.1 中引用了很多 apache其他項目的類包,如:xml 解析、日志、驗證等,因此struts1.1 的包結構與1.0 完全不同。在struts 1.1環境下,一個webapp 要成功運行,除了struts.jar 外,還需要引用12個包。
    • Struts 1.1 增加了很多新功能,例如,支持sub-applications, 動態FormBean,異常處理,驗證,支持Tile templating等。

    盡管struts 1.0 是正式發布版,但是結構已經老化,功能也已經固化。所以我們的Framework不選用struts 1.0, 而選用 struts 1.1。

    1.2支持struts的應用服務器

    根據apache官方網站的說法,struts幾乎支持所有的servlet containers, 下面是幾種主要的servlet containers

    Servlet Container

    版本

    iPlanet Application Server 6.0sp2 or higher, 6.5
    Tomcat 3.2.x, 4.0 or higher
    Weblogic 6.0 or higher
    Websphere 3.5 or higher
    Orion 1.0 or higher
    Resin 1.2 or higher
    JRun 3.0 or higher

    1.3配置說明

    我們公司目前項目中使用較多的應用服務器是iPlanet Application Server, Tomcat。Struts 1.1 在這兩個應用服務器下已經配置通過。

    Tomcat 與struts結合的很好,只需要將xxx.war 放到 webapp 目錄下,啟動Tomcat 即可,不需要其他額外的配置。

    iPlanet 配置復雜一些,主要原因是xml parser 版本不一致,和struts 相關類不能加載。具體的配置說明請見《如何在 iAS 6.x 中配置Struts 1.1 beta x》。

    在其他的應用服務器上,還沒有嘗試struts, 今后根據項目需要會作進一步的研究。

    struts框架

    2.1 struts 體系結構

    struts framework是MVC 模式的體現,下面分別從模型、視圖、控制來看看struts的體系結構(Architecture)。下圖顯示了struts framework的體系結構響應客戶請求時,各個部分工作的原理。


    Struts體系結構


     

    2.1.1 從視圖角度(View)

    主要由JSP建立,struts自身包含了一組可擴展的自定義標簽庫(TagLib),可以簡化創建用戶界面的過程。目前包括:Bean Tags,HTML Tags,Logic Tags,Nested Tags,Template Tags。

    2.1.2從模型角度(Model)

    模型主要是表示一個系統的狀態(有時候,改變系統狀態的業務邏輯操作也也劃分到模型中)。在Struts中,系統的狀態主要有ActiomForm Bean體現,一般情況下,這些狀態是非持久性的。如果需要將這些狀態轉化為持久性數據存儲,Struts本身也提供了Utitle包,可以方便的與數據庫操作。

    2.1.3 從控制器角度(Controller)

    在Struts framework中, Controller主要是ActionServlet,但是對于業務邏輯的操作則主要由Action、ActionMapping、ActionForward這幾個組件協調完成。其中,Action扮演了真正的業務邏輯的實現者,而ActionMapping和ActionForward則指定了不同業務邏輯或流程的運行方向。

    2.2 struts 的組件

    框架中所使用的組件:

    ActionServlet 控制器
    ActionClass 包含事務邏輯
    ActionForm 顯示模塊數據
    ActionMapping 幫助控制器將請求映射到操作
    ActionForward 用來指示操作轉移的對象
    ActionError 用來存儲和回收錯誤
    Struts標記庫 可以減輕開發顯示層次的工作

    2.3 struts 配置文件

    Struts-config.xml集中了所有頁面的導航定義。對于WEB項目,通過配置文件可迅速把握其脈絡,這不管是對于前期的開發,還是后期的維護或升級都是方便的。掌握Struts-config.xml是掌握Struts的關鍵所在。

    在struts的早先版本中,只有一個struts配置文件struts-config.xml。但是,對大型項目來說,使用和修改這個配置文件,會成為瓶頸。在struts1.1中,支持sub-Application ,可以定義多個配置文件協同工作。

    通過struts配置文件struts-config.xml 將struts各個組件聯系在一起。在struts-config.xml 中可以定義下面內容:

    • 全局轉發
    • ActionMapping類
    • ActionForm bean
    • JDBC數據源

    2.3.1 配置全局轉發

    全局轉發用來在JSP頁之間創建邏輯名稱映射。全局轉發的例子:

    <global-forwards>

    <forwardname="logoff"path="/logoff.do"/>

    <forwardname="logon"path="/logon.jsp"/>

    <forwardname="registration"path="/registration.jsp"/>

    <forwardname="success"path="/mainMenu.jsp"/>

    </global-forwards>

    屬性 描述
    Name 全局轉發的名字
    Path 與目標URL的相對路徑

    2.3.2 配置ActionMapping

    ActionMapping對象幫助進行框架內部的流程控制,它們可將請求URI映射到Action類,并且將Action類與ActionForm bean相關聯。ActionServlet在內部使用這些映射,并將控制轉移到特定Action類的實例。所有Action類使用perform()或者execute()方法實現特定應用程序代碼,返回一個ActionForward對象,其中包括響應轉發的目標頁面名稱。例如:

    <action-mappings>

    <actionpath="/logon"

    type="org.apache.struts.webapp.example.LogonAction"

    name="logonForm"

    scope="session"

    input="logon">

    </action>

    <forward name="failure" path="/error.jsp"/>

    <forward name="success" 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使用sendRedirect()方法來轉發資源

    2.3.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

    類的完全限定名

    2.3.4 配置JDBC數據源

    例子:

    <data-sources>

    <data-source>

    <set-property property="autoCommit"

    value="false"/>

    <set-property property="description"

    value="Example Data Source Configuration"/>

    <set-property property="driverClass"

    value="org.postgresql.Driver"/>

    <set-property property="maxCount"

    value="4"/>

    <set-property property="minCount"

    value="2"/>

    <set-property property="password"

    value="mypassword"/>

    <set-property property="url"

    value="jdbc:postgresql://localhost/mydatabase"/>

    <set-property property="user"

    value="myusername"/>

    </data-source>

    </data-sources>

    屬性 描述
    description 數據源的描述
    autoCommit 數據源創建的連接所使用的默認自動更新數據庫模式
    driverClass 數據源所使用的類,用來顯示JDBC驅動程序接口
    loginTimeout 數據庫登陸時間的限制,以秒為單位
    maxCount 最多能建立的連接數目
    minCount 要創建的最少連接數目
    password 數據庫訪問的密碼
    readOnly 創建只讀的連接
    User 訪問數據庫的用戶名
    url JDBC的URL

    通過指定關鍵字名稱,Action類可以訪問數據源,比如:

    javax.sql.DataSource ds = servlet.findDataSource(“conPool”);

    javax.sql.Connection con = ds.getConnection();

    struts標記庫

    struts 標記庫包含4種類型的標記,分別是:

    • struts-bean taglib:在訪問bean和bean屬性時使用的tag,也包含一些消息顯示的tag。
    • struts-html taglib:用來生成動態HTML用戶界面和窗體的tag。
    • struts-logic taglib :用來管理根據條件生成輸出文本,和其它一些用來控制的信息。
    • struts-template taglib:用來定義模板機制。

    Struts提供了功能強大的Taglib,充分使用這些Tag,能最大限度的發揮Struts的作用。

    由于標記庫功能強大,所以掌握它需要花費一定的時間。目前我們可以先從 struts-html taglib 學起,主要精力還是要先放在理解掌握struts導航功能上。

    文檔《struts 標記庫》可以幫助學習掌握struts taglib.

    可視化設計工具和代碼生成器Camino

    Camino 是基于 struts framework的可視化建模工具。使用camino 可以實現快速設計和開發,主要特點有:

    • 支持struts 1.0 和 struts 1.1
    • 通過storyboard , 可視化定義頁面導航流程,配置struts-config.xml 文件。
    • Jsp converter wizard 功能可以將普通jsp 轉換成帶struts-html taglib 的jsp
    • Code Generator wizard 功能可以自動生成 Action 和 FormBean 類的框架。
    • Camin 3.0 還提供了驗證器和Preview Jsp 的功能。

    目前Camino的版本有2.05 和 3.0, 可以下載試用版。Camino 自帶了幫助文檔,可以方便學習Camino。

    Struts example

    Struts 1.1 beta 3 的包中包含了幾個example, 可以幫助學習struts。

    Web應用程序 描述
    Struts-blank.war 一個簡單的web應用程序
    Struts-documentation.war 包含struts站點上所有struts文檔
    Struts-example.war Struts很多特性的示范
    Struts-exercisetaglib.war 主要用于對自定義標簽庫進行增加而使用的測試頁,但也可以示范如何使用struts標記
    Struts-template.war 包含struts模板標記的介紹和范例
    Struts-upload.war 一個簡單的例子,示范如何使用struts框架上傳文件

    在Tomcat 4.1.18運行環境下,只需要將 xxx.war 文件放到webapps 目錄下,啟動Tomcat 即可。

    建議從struts-example 開始學習,熟讀struts-config.xml, jsp, 和 java 源碼。

    6、統一的IDE工具: eclipse

    Eclipse 是由IBM支持的開發源碼的IDE, 目前的最新版本是2.1。與Netbeans, JBuilder相比,由以下特點:

    • 界面設計精細,布局合理,秉承了IBM的風格。
    • 功能齊全,具備了Netbeans, JBuilder(Enterprice fetature 除外)大部分功能,還有一些特有的功能,如:代碼歷史記錄比較、替換,代碼重構,自動生成get,set方法, 小組協作方式的版本控制和權限控制。
    • 速度快,執行一個代碼格式化(14,000行)的操作,要比Netbeans快百倍以上。
    • 功能強大的plug-in,可以與Ant, JUnit, Tomcat集成。將來我們也可以編寫自己的插件,有增強功能的潛力。

    目前,每個項目使用的開發工具都不同,有JBuilder, Netbeans等。從長遠考慮應該采用開發源碼的IDE, 不存在盜版問題。現在開發源碼的IDE有Netbeans, Eclipse兩大陣營,分別由Sun 和 IBM支持。綜合上面的Eclipse特性,我推薦統一使用Eclipse。

    7、參考資料

    • 網站:

      struts 官方網站:http://jakarta.apache.org/struts

      struts resource : http://jakarta.apache.org/struts/resources/index.html

      Camino 網站:http://www.scioworks.com/index.html

      其他網站:http://husted.com/struts/

      http://struts.application-servers.com/main.html

      http://www.synthis.com/products/architectures/struts/index.jsp

    • 文章:

      《struts框架詳細介紹》 - ppt 文檔,描述了struts 框架

      《struts-intro》- ppt 文檔,其中的struts 導航流程圖非常好。

      《Using Struts》 - ppt 文檔,概述了struts 框架和組成

      《如何在 iAS 6.x 中配置Struts 1.1 beta x》- 講述在iPlanet 6.x 如何配置 struts 1.1

      《Struts標記庫》 - 詳細介紹了struts taglib的使用

      《struts turorial》 - 一個網上購書的示例,詳細講解了struts使用步驟


    評論

    # re: Struts 框架  回復  更多評論   

    2007-11-10 17:59 by Edward's
    幾年前的文章吧

    # re: Struts 框架  回復  更多評論   

    2008-01-02 14:41 by asd
    估計是,現在版本都2.1了,還說這些!

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 亚洲色欲色欲www在线丝 | 国产91免费在线观看| 亚洲人成电影在线观看网| 欧洲黑大粗无码免费 | 亚洲人成网站免费播放| 国产亚洲成在线播放va| 亚洲成年轻人电影网站www| 在线免费视频一区| 毛片在线播放免费观看| 亚洲老熟女五十路老熟女bbw| 久久青青草原亚洲av无码| 免费观看激色视频网站bd| 日本一区二区在线免费观看 | 亚洲乱妇熟女爽到高潮的片| 国产A在亚洲线播放| 天天摸天天碰成人免费视频| 国产免费一区二区三区不卡| 亚洲老熟女五十路老熟女bbw | 日本精品久久久久久久久免费| 亚洲精品国产福利片| 亚洲一区精品伊人久久伊人| 99久久免费国产香蕉麻豆| 成人自慰女黄网站免费大全| 久久亚洲国产最新网站| 亚洲中文字幕无码日韩| 国产网站免费观看| 2020久久精品国产免费| 你懂得的在线观看免费视频| 国产亚洲综合视频| 亚洲综合国产成人丁香五月激情| 亚洲成AV人片在WWW色猫咪| 免费二级毛片免费完整视频| 一二三四在线播放免费观看中文版视频| 国产一级在线免费观看| 男男gay做爽爽免费视频| 亚洲中文字幕无码久久2020| 亚洲一区二区三区高清| 伊人久久大香线蕉亚洲五月天| 国产伦精品一区二区三区免费下载| 免费毛片在线看片免费丝瓜视频| 四虎国产精品永久免费网址 |