RoyJohnson

          生命不息,奮斗不止!
          posts - 4, comments - 9, trackbacks - 0, articles - 0

          Struts詳解

          Posted on 2007-06-17 18:07 roy_johnson 閱讀(1427) 評論(2)  編輯  收藏 所屬分類: Struts

                                                      Struts框架詳解
          struts-config.xml    Struts配置文件
          ActionServlet  控制器
          Action Class  包含事務邏輯
          ActionForm  顯示模塊數(shù)據(jù)
          ActionMapping  幫助控制器將請求映射到操作
          ActionForward  用來指示操作轉移的對象
          ActionError  用來存儲和回收錯誤
          Struts標記庫  可以減輕開發(fā)顯示層次的工作

          struts框架的優(yōu)勢
          1.良好的架構和設計
          2.可重用,模塊化,擴展性好
          3.Open source

          struts-config.xml

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

          FormBean部分

          <struts-config>
            <!--  Form Bean Definitions -->
            <form-beans>
              <form-bean name=“testform" type="com.cjea.test.TestForm" />
            </form-beans> 

          全局轉發(fā)部分

          <!-- Global Forward Definitions -->
            <global-forwards>
              <forward   name="failure"     path="bad.jsp"/>
              <forward   name="success"     path="/good.jsp" />
            </global-forwards>

          action部分

          <action-mappings>
             <action path=“/test/test.jsp" type=“com.cjea.test.testAction" name="testform" scope="request">
                  <forward name="success" path="/test/good.jsp" />
             </action>
          <action-mappings> 
          </struts-config>

           ActionServlet

          ActionServlet 是struts框架 MVC 實現(xiàn)的 controller 部分,它是這一框架的核心。
          ActionServlet 創(chuàng)建并使用 Action、ActionForm 和 ActionForward。

          ActionServlet的基本功能

          截獲用戶的Http請求
          把這個請求映射到相應的Action類。
          創(chuàng)建一個ActionForm bean實例,將form請求放入formbean的實例中
          調(diào)用Action實例的perform()方法
          將ActioForm bean,Action Mapping對象,request和response對象傳給Action的perform()方法
          perform返回一個ActionForword對象,根據(jù)方法執(zhí)行情況轉到相應的jsp頁面.

           

          Action Classes


          Action 類是業(yè)務邏輯的一個包裝。Action 類的用途是將 HttpServletRequest 轉換為業(yè)務邏輯。

          ActionForm

          ActionForm 維護 Web 應用程序的會話狀態(tài)。
          ActionForm 是一個抽象類,必須為每個輸入表單模型創(chuàng)建該類的子類。


          ActionForm的使用

          假定有一個由 HTML 表單設置的 TestActionForm。Struts 框架將執(zhí)行以下操作:
          檢查 TestActionForm是否存在;如果不存在,它將創(chuàng)建該類的一個實例。
          Struts 將使用 HttpServletRequest 中相應的域設置 TestActionForm的狀態(tài)。
          Struts 框架在將 TestActionForm傳遞給TestAction 之前將更新它的狀態(tài)。
          struts-config.xml 文件控制 HTML 表單請求與 ActionForm 之間的映射關系。
          可將多個請求映射到 TestActionForm 。

          Struts標記庫
          Struts框架包括自定義標簽庫,它可以用 在很多方面。盡管這些庫并不要求用框 架,但使用它們會有助于程序的開發(fā)。

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

          Bean Taglib
          用于定義新bean、訪問bean及其屬性的標記
          在struts-bean.tld中定義了它的標記庫描述器
          Bean Taglib主要功能
          創(chuàng)建和復制bean的標記
          腳本變量定義標記
          bean翻譯標記
          消息國際化標記
          Bean復制標記 (<bean:define>)
          可定義新bean,可復制現(xiàn)有bean,還可從現(xiàn)有bean復制屬性。
          定義新字符串常數(shù)
          將現(xiàn)有的bean復制到新定義的bean對象
          復制現(xiàn)有bean的屬性來創(chuàng)建新的bean
          <bean:define>標記屬性:
          Id 新定義的bean腳本變量名稱,必須設置
          Type 定義引入腳本變量的類
          Value 為id屬性定義的腳本變量分配一個新的對象
          <bean:define>標記屬性:
          Name 目標bean的名稱。若value屬性沒有設置,這個屬性就必須設置
          property Name屬性定義的bean的屬性名稱,用來定義新的bean
          Scope 源bean的作用域。若沒有設置,搜索范圍是從頁作用域到應用程序作用域
          toScope 目標bean的作用域。若沒有設置,默認值是頁作用域
          舉例
          定義一個bean:
          <bean:define id="test" value="this is a test"/>
          源bean在頁作用域中被拷貝到請求作用域中的另一個bean:
          <bean:define id="targetBean" name="sourceBean"
          scope="page" toScope="request"/>
          腳本變量的標記
          從多種資源中定義和生成腳本變量,這些資源包括cookie,請求參數(shù),HTTP標頭等等。
          腳本變量的標記屬性:
          Id        腳本變量和要定義的頁作用域                 屬性的名稱
          Name    cookie/標頭/參數(shù)的名稱
          Value    如果沒有匹配的cookie或    數(shù)值,就返回這個屬性指    定的默認值

          腳本變量的標記屬性:
          multiple 如果這個屬性設置了任意一個數(shù)值,所有匹配的cookie都會被積累并存儲到一個Cookie[](一個數(shù)組)類型的bean里           若無設置,指定cookie的第一個值將作為Cookie類型的值
          舉例
          <bean:cookie id="myCookie" name="userName"/>
          腳本變量名稱是myCookie,用來創(chuàng)建這個屬性的cookie的名稱是userName。
          <bean:header id="myHeader" name="Accept-Language"/>
          腳本變量名稱是myHeader,請求標頭的名稱是Accept-Language.

          舉例
          <bean:parameter id="myParameter" name="myParameter">
          腳本變量名稱是myPatameter,它保存的請求參數(shù)的名稱也是myParameter
          邏輯標記
          Struts邏輯標簽庫包含的標記能夠有條件地產(chǎn)生輸出文本
          在對象集合中循環(huán)從而重復地產(chǎn)生輸出文本,以及應用程序流程控制
          它也提供了一組在JSP頁中處理流程控制的標記
          邏輯標記封裝在文件名為struts-logic.tld的標記包中
          邏輯標記庫的功能
          條件邏輯
          重復
          轉發(fā)/重定向響應
          條件邏輯標記
          第一類可以比較下列實體與一個常數(shù)的大小
          第二類在計算標記體之前判斷特定的項目是否存在
          第三類根據(jù)模板匹配的結果檢查標記體的內(nèi)容
          第一類條件邏輯標記
          <equal>  如果常數(shù)與被定義的實體相等,返回true
          <notEqual> 如果常數(shù)與被定義的實體不相等,返回true
          <greaterEqual> 如果常數(shù)大于等于被定義的實體,返回true
          第一類條件邏輯標記
          <lessEqual> 如果常數(shù)小于等于被定義的實體,返回true
          <lessThan> 如果常數(shù)小于被定義的實體,返回true
          <greaterThan> 如果常數(shù)大于被定義的實體,返回true
          舉例
          判斷名為"name"的請求參數(shù)的值是否是"SomeName"。
          <logic:equal parameter="name" value="SomeName">
                  The entered name is SomeName
          </logic:equal>
          舉例
          判斷在頁的作用域中是否有一個名為"bean"的bean,它有一個prop屬性,這個屬性的值是否大于7。
          如果這個屬性能夠轉化為數(shù)值,就進行數(shù)值比較,否則就進行字符串比較。
          <logic:greaterThan name="bean" property="prop" scope="page" value="7">
          The value of bean.Prop is greater than 7
          </logic:greaterThan>
          第二類條件邏輯標記
          <logic:present>
          <logic:notPresent>
          第三類條件邏輯標記
          <logic:match>
          <logic:notMatch>
          重復標記<logic:iterate>
          它能夠根據(jù)特定集合中元素的數(shù)目對標記體的內(nèi)容進行重復的檢查
          集合的類型
          java.util.Iterator
          java.util.Collection
          java.util.Map
          java.util.List
          數(shù)組
          舉例
          Strlst是一個包含字符串的List,現(xiàn)在要將他內(nèi)部的字符串全都顯示在瀏覽器里
          <logic:iterate id="element" name="strlst"  indexId="index">
          <%=(String)element)%>
          </logic:iterate>
          轉發(fā)標記
          <logic:forward>標記能夠將響應轉發(fā)給重定向到特定的全局ActionForward上
          ActionForward的類型決定了是使用PageContext轉發(fā)響應,還是使用sendRedirect將響應進行重定向
          此標記只有一個"name"屬性,用來指定全局ActionForward的名稱,例如:
          <logic:forward name="myGlobalForward"/>
          重定向標記
          <logic:redirect>標記是一個能夠執(zhí)行HTTP重定向的強大工具。
          根據(jù)指定的不同屬性,它能夠通過不同的方式實現(xiàn)重定向。
          它還允許開發(fā)人員指定重定向URL的查詢參數(shù)。
          HTML標記
          Struts HTML標記可以大致地分為以下幾個功能:
          顯示表單元素和輸入控件
          顯示錯誤信息
          顯示其他HTML元素
          模板標記
          Struts模板標記可以大致地分為以下幾個功能:
          插入標記<template:insert>
          放置標記<template:put>
          獲得標記<template:get>

          Feedback

          # re: Struts詳解[未登錄]  回復  更多評論   

          2007-06-17 20:29 by dd
          挺詳細的嗎!

          # re: Struts詳解  回復  更多評論   

          2007-06-19 11:51 by Alexander.Yu
          為什么不用2.0?

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


          網(wǎng)站導航:
           
          主站蜘蛛池模板: 洛浦县| 车致| 元朗区| 昌邑市| 桐梓县| 北京市| 湾仔区| 商河县| 尼玛县| 江安县| 永和县| 建湖县| 环江| 玉溪市| 鄂州市| 奈曼旗| 贵定县| 全南县| 喀喇| 五华县| 四子王旗| 桑日县| 漠河县| 奇台县| 赤峰市| 湘阴县| 安国市| 右玉县| 绥阳县| 丹凤县| 长兴县| 来凤县| 保康县| 临沭县| 西宁市| 渭南市| 华容县| 宜阳县| 三明市| 新密市| 平泉县|