struts1的工作流程

          Struts在Tomcat中的安裝配置及工作流程

          1.準備工作
                安裝JDK及Tomcat,并分別設置環境變量:JAVA_HOME、CLASSPATH、COMCAT_HOME,并確保Tomcat已正常工作。本文以jdk1.5和Tomcat5.5.12為環境介紹Struts在Tomcat中的安裝及工作流程。
          2.安裝Struts(通過二進制發布包安裝)
           2.1下載Struts二進制發布包(http://struts.apache.org/downloads.html)
           2.2解壓下載的二進制發布包,并將解壓目錄下lib目錄中的所有.jar文檔復制到TOMCAT_HOME\web應用\WEB_INF\lib目錄下,即只有些Web應用使用Struts構架。
          另:如果多個應該要同時使用Struts構架,則應該將解壓目錄下lib目錄中的所有.jar文檔復制到TOMCAT_HOME\common\lib目錄下。
           2.3將對應lib目錄下的struts.jar文件路徑添加到CLASSPATH環境變量中。
          通過以上配置Web應用就可以使用Struts構架進行項目開發了。
          另外還可以通過Struts源碼進行安裝。
          3.Struts構架的構成
           整個Struts應用是一個分工明確的有機整體,在控制器的統一指揮下,各個組件各負其責,協調工作,是MVC設計模式的具體實現。MVC模式分為:模型(Model)、視圖(View)、控制器(Controller)三部分。
          3.1模型(Model):業務邏輯層,用于實現具體的業務邏輯。此部分一般由JavaBean或EJB(企業級JavaBean)組成。Struts中的模型主要分為兩個部分:
          1.系統的內部狀態
          2.可以改變狀態的操作(事務邏輯)
          內部狀態通常由一組ActinForm JavaBean表示。根據設計或應用程序復雜度的不同,這些Bean可以是自包含的并具有持續的狀態,或只在需要時才獲得數據(從某個數據庫)。
          大型應用程序通常在方法內部封裝事務邏輯(操作),這些方法可以被擁有狀態信息的bean調用。比如購物車bean,它擁有用戶購買商品的信息,可能還有checkOut()方法用來檢查用戶的信用卡,并向倉庫發定貨信息。
          小型程序中,操作可能會被內嵌在Action類,它是struts框架中控制器角色的一部分。當邏輯簡單時這個方法很適合。
          注:建議用戶將事務邏輯(要做什么)與Action類所扮演的角色(決定做什么)分開。
          3.2視圖(View):表示層,與用戶直接交互的視圖。此部分一般通過JSP頁面來實現,另外Struts還提供了豐富的自定義標識庫,它與模型部分有效交互。
          3.3控制器(Controller):控制層,是整個應用的控制中心,用于控制整個業務流程(Flow Control),使用Model與View協同工作。控制器通過專門的Servlet來實現的,該Servlet是一個Struts API中提供的ActionServlet類型的實例。
          3.4 Struts框架的組成部分
          Struts-config.xml    Struts配置文件
          ActionServlet      控制器
          Action Class      包含事務邏輯
          ActionForm      顯示模塊數據
          ActionMapping     幫助控制器將請求映射到操作
          ActionForward     用來指示操作轉移的對象
          ActionError         用來存儲和回收錯誤
          Struts標記庫    可以減輕開發顯示層的工作
          3.5主要的配置文件
           web.xml(TOMCAT_HOME/Web應用/WEB_INF),Web.xml是web應用的通過配置文件,主要完成ActionServlet的配置、配置首頁的設置等。
          Struts-config.xml(TOMCAT_HOME/Web應用/WEB_INF),struts-config.xml是整個Struts構架的核心,用來組裝各個組件,是一個控制中心。
          4.Struts構架的工作流程(如圖所示)
          初學Struts時,可能難以理解其工作流程,最簡單的理解可以把Struts看作是一個“頁面導航”構架,在struts_config.xml來規化應該程序的各個部分,Struts通過讀取該配置文件來組織應用程序。

           

          5.流程說明
          首先,服務器接收到客戶瀏覽器請求后,對請求進行過濾,若屬于Struts的處理范圍則自動提交給Struts控制器進行處理,否則按傳統方式作出響應。
          注:過濾標準依據web.xml中Servlet的配置信息:
          <servlet>
          <servlet-name>actionServlet</servlet-name>
          <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
          </servlet>
          <servlet-mapping>
          <servlet-name>actionServlet</servlet-name>
          <url-pattern>*.do</url-pattern>
          </servlet-mapping>
          以上信息配置了名為actionServlet的控制器Servlet,并說明凡是以.do(也可約定為其它)結尾的頁面請求都由此Servlet來處理,實現此Servlet的類是org.apache.struts.action.ActionServlet.(Struts API中定義的組件類)
          其次,控制器servlet開始工作,讀取struts_config.xml中的配置信息
          注:Struts_config.xml配置如下:
          <?xml version="1.0" encoding="UTF-8"?>
          <struts-config>
          <form-beans>
          <form-bean name="formBeanName" type=" package.ClassNameForm "/>
          </form-beans>
          <global-forwards>
          <forward name="failed" path="/error.jsp"/>
          <forward name="successed" path="/right.jsp"/>
          </global-forwards>
          <action-mappings>
          <action path="/login" type ="classmate.LoginAction" name ="formBeanName" scope="request" input ="/login.jsp"/>
          <action path="/regist" forward="/regist.jsp"/>
          </action-mappings>
          </struts-config>
          1. 使用指定的JavaBean來自動接收來自客戶提交的表單數據,聲明該JavaBean的代碼對應于struts_config.xml中的:
          <form-beans>
          <form-bean name="formBeanName" type="package.ClassNameForm"/>
          </form-beans>
           Name:該bean的名字
           Type:實現該bean的類
          為實現自動填充功能,該Bean(package.ClassNameForm類)必須是org.apache.struts.action.ActionForm類(即其子類)的對象。
          2. Servlet控制器讀取Http分發規則(即Http請求與處理此請求的類的對應關系)
          <action-mappings>
          <action path="/login" type ="package.LoginAction" name =" formBeanName " scope="request" input ="/login.jsp"/>
          <action path="/regist" forward="/regist.jsp"/>
          </action-mappings>
          說明:
          path:和本Action對應的請求頁面的相對路徑(不包括后.do)。
          type:處理請求的Action Bean類(完整路徑)。
          name:用到的ActionForm Bean的名字(<form-bean>元素中聲明的)
          scope:ActionForm Bean的作用域(默認為session)。
          input:表單驗證出錯時的處理頁面。
          forward:指定目標響應頁面(與<forward>元素不同,只有當沒有指定type屬性時本屬性才生效)。
          另:還可以在<action>中配置<forward>元素,即此Action處理后反回的目標頁面
          以上代碼使用<action-mapping>元素的子元素<action>來約定控制器(ActionSevlet對象)分發HTTP請求的規則:
          1. 若頁面URI是login.do,則使用formBeanName來自動接收來自客戶請求表單中的數據(該formBeanName中屬性要與用戶提交表單中的屬性名稱對應該,否則將無法接收),并將該請求分給一個package.LoginAction類型的實例來處理。該實例起到事件監聽器的作用,類型必須是org.apache.struts.action.Action的子類。
          注:控制器(ActionServlet)對象與JavaBean的情形類似,第一次運行時會自動實例化一個對象。
          2. 若頁面URI是regist.do,則直接轉向/regist.jsp頁面作出響應。
          3. Action對象的功能
          Action對象接收到發送來的Http請求和由ActionServlet對象已填充過的表單對象,然后調用其execute()方法進行處理,此方法有四個參數:
          ActionMapping mapping:映射到struts_config.xml中的相關配置信息。
          ActionForm form:ActionServlet對象填充過的表單(ActionForm Bean)的一個引用,可以從對象中獲取表單數據。
          HttpServletRequest request:來自客戶端的Http請求信息。
          HttpServletResponse response:響應客戶端的Http信息。
          執行完成后,返回給控制器ActionServlet對象一個封裝了目標頁面的ActionForward對象,此時,mapping對象調用findForward()方法 到struts_config.xml中的查找<forward>元素中映射信息,<forward>元素的定義如下:
          <global-forwards>
          <forward name="name1" path="/page1.jsp"/>
          <forward name="name2" path="/page2.jsp"/>
          </global-forwards>
          Execute方法中的findForward()方法中的參數對應forward元素中的name屬性,找到后將導航到相應的頁面。
          注:<forward>可以在struts_config.xml中兩個地方定義:一個是<global-forwards>元素中,此時在整個應用中都有關效,可理解為編程語言中的全局變量;另一個是<action>元素中,此時作用域為本Action。 findForward()方法查找順序為<action>?<global_forwards>
          6.Struts構架工作流程總結
          ActionSerlvet接收客戶Http請求,使用ActionForm Bean自動填充客戶送來的表單數據到ActionForm Bean對象中?根據配置信息(struts_config.xml)將請求分發給相應的Action對象?Action對象調用execute()方法處理請求(根據JavaBean和ActionForm取得業務邏輯和表單數據),并反回ActionForward對象給ActionSerlvet對象?根據ActionForward對象的信息(目標頁面),ActionServlet再次將Http請求導航到目標頁面,并發送到客戶端。
          以上是struts在Tomcat中的安裝與基本配置,在以后的系列文章中將詳細介紹其核心組件及運行機制。

           

          posted on 2011-02-23 11:18 小羅 閱讀(1098) 評論(0)  編輯  收藏


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


          網站導航:
           
          <2011年2月>
          303112345
          6789101112
          13141516171819
          20212223242526
          272812345
          6789101112

          導航

          統計

          常用鏈接

          留言簿

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          相冊

          收藏夾

          Web Framework

          常上的技術網站

          查找資料的java網站

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 兴和县| 乃东县| 新宾| 清镇市| 桦川县| 天长市| 凌源市| 固阳县| 赞皇县| 亚东县| 全椒县| 湾仔区| 临桂县| 涿鹿县| 马龙县| 邳州市| 云龙县| 天长市| 庄浪县| 吕梁市| 仙游县| 北宁市| 新乡县| 客服| 田阳县| 略阳县| 巴楚县| 伊金霍洛旗| 合川市| 噶尔县| 达日县| 合阳县| 贵港市| 南江县| 鹤山市| 安福县| 金坛市| 元阳县| 延津县| 永宁县| 宁远县|