Sung in Blog

                     一些技術(shù)文章 & 一些生活雜碎

                Struts framework根據(jù)配置文件使得ServletAction,ActionMapping,Action,ActionForm這幾個不同層次的組件相互交互,協(xié)調(diào)的工作。這些配置文件是在系統(tǒng)啟動的時候,讀入并保存于內(nèi)存中,供控制器使用的。

                Struts framework主要包括三部分的配置描述,一個是指定有關(guān)Struts Controller及其相關(guān)的的配置描述(Initialization Parameters),一個是對struts tag lib的描述,一個是Struts組件(ActionMapping,Action,ActionForm)之間相互映射協(xié)調(diào)的關(guān)系

           

                因為Struts Controller的主要類ActionServlet是繼承自HttpServlet,所以必須像配置一個Servlet那樣在部署描述符(Web.xml )中配置ActionServlet類及其訪問映射。

             當?shù)谝淮蝿?chuàng)建基于Struts的Web應(yīng)用程序時,將為您創(chuàng)建一個部署描述符,這通常就足夠了。該文件包括下列條目:

          l、<servlet>條目定義用于Web應(yīng)用程序的servlet (在本例中,這是唯一的servlet):

          — <servlet-name> 和<servlet-class>指示ActionServlet (標識為“操作”)接收HTTP請求并確定如何響應(yīng)。

          — <init-param>表示servlet初始化參數(shù).

          — “config”指示ActionServlet的行為由指定的配置文件來指導,該配置文件通常具有以下名稱:

          \WEB-INF\struts-config.xml

          — “debug”具有整數(shù)值,它指示將有關(guān)處理的詳細信息寫至控制臺的程度。“0”表示不生成任何Debug信息。

          — “detail”具有整數(shù)值,它指示將“映射”詳細信息(如后面所述)寫至控制臺的程度。

          ―  <load-on-startup>導致在啟動應(yīng)用程序時裝入servlet。

          —  <servlet-mapping>元素標識這樣的命名模式:當命名模式由URL進行匹配時,Web服務(wù)器就將控制權(quán)移交給ActionServlet??紤]下面各種情況:

          ―  訪問了ActionServlet,原因是“操作”(<servlet-mapping>中的<servlet-name>元素的內(nèi)容)與“操作”(<servlet>中的<servlet-name>元素的內(nèi)容)相匹配。

          — <servlet-mapping>元素指定URL的結(jié)尾的命名模式。每個URL的開頭都是應(yīng)用程序上下文路徑。按照慣例,ActionServlet調(diào)用對象以響應(yīng)與命名模式“*.do”(其中“*”是通配符)一致的URL。

          — <welcome-file-list>元素指示獲得初始控制權(quán)的特定于應(yīng)用程序的代碼;在本例中,Web服務(wù)器直接從Web Content目錄中調(diào)用index.jsp。

          — <error-page>元素指示顯示哪個JSP來響應(yīng)錯誤;在本例中,錯誤為如下所示:

          ―  404  (找不到資源)

          ―  500  (Web服務(wù)器內(nèi)部發(fā)生錯誤)

                每個<taglib>元素都使相對URL(相對于Web.xml)與標記庫描述符(相對于Web應(yīng)用程序根目錄)相關(guān)聯(lián)。每個JSP都可以使用同一個URL來表示給定的標記庫,而Web.xml確定引用了哪個文件。

          有關(guān)struts tag lib的配置描述
              如果你的web application打算使用Struts的taglib,那么你有必要在web.xml中對struts taglib進行配置描述。

          有關(guān)Struts Action Mapping的配置描述
                作為先前描述的web.xml設(shè)置的結(jié)果,Web應(yīng)用程序服務(wù)器將請求的一個子集按路徑發(fā)送至ActionServlet,它通常調(diào)用一系列操作和JSP。ActionServlet的響應(yīng)是基于配置文件struts-config.xml的內(nèi)容的。有關(guān)其DTD文檔的描述,請參考這里

              一般struts-config(version1.1)包含了如下幾個部分:

             (1)form-bean

             (2)global-forwards

             (3)action-mappings

             (4)data-sources

           

                對于這樣的一個請求(例如,表示為“/login.do”),Struts框架將會執(zhí)行下列步驟:

          1、    尋找操作類對象(繼承org. apache.struts.action.Action的類)
          2、    ActionServlet調(diào)用操作類對象的執(zhí)行方法
          操作類中的執(zhí)行方法的特征符為如下所示:
          public ActionForward  execute(
                ActionMapping mapping,
                ActionForm form,
                HttpServletRequest request,
                HttpServletResponse response)
          ?    映射對象(ActionMapping),它包含指示如何響應(yīng)方法的每個可能結(jié)果的規(guī)則(“映射”)
          ?    Struts表單bean(ActionForm),它保存發(fā)送至HTML表單或接收自HTML表單的數(shù)據(jù)
          ?    請求和響應(yīng)對象(HttpServletReques/ HttpServletResponse)

          3、    從執(zhí)行方法返回ActionForward對象,用于指導ActionServlet接著訪問哪個操作類或JSP
          返回的ActionForward對象中的信息取決于兩個值:
          ?    方法的結(jié)果(如在“成功”或“故障”等字符串中所述)
          ?    映射對象,它包含從Struts配置文件中讀取的信息


          要弄明白某些運行時關(guān)系,要明白struts-config.xml該文件包括下面的一組條目:
          ?    <form-beans>標記標識每個表單bean
          ?    <action-mappings>標記包括用于指導應(yīng)用程序流的信息,每個<action>子標記都使相對URL與操作類和潛在的后續(xù)操作相關(guān)。
          Form-bean元素
          Struts配置文件中的一個示例<form-bean>子元素為如下所示:
           <form-bean name=“registerForm”  type=“strutscommon.RegisterForm”/>
          每個<form-bean>子元素都包括下列屬性:
          name
          表單bean的名稱,稍后在配置文件中會用到。ActionServlet舉例說明了該bean(如果需要的話)并在將對bean的引用存儲在請求或會話對象中時將該名稱用作鍵。
          type
               類的全限定名稱,它繼承org.apache.struts.action.ActionForm該類必須在類路徑中。接受“Struts貿(mào)易樣本”中的注冊的表單bean包括HTML注冊表單中每個字段的getter 和setter方法。該bean還包括驗證方法,如下節(jié)“驗證”中所述。
          Action元素
             Struts配置文件中的一個示例<action>元素為如下所示:
            <action path=“/register”
                  type=“strutsEGL.RegisterAction”
                 name=“registerForm”
                 input=“/register.jsp”
                 scope=“request”
                 <forward name=“success”path=“/home.do”/>
                 < forward name=“failure”path=“/register.jsp”/>
               </action>
          每個<action>元素都包括下列屬性中的某些屬性或所有屬性:
           path
               將請求指定為非限定URL,不帶文件擴展名(例如,“/register”)請求是根據(jù)<action>元素中的其它屬性來處理的,并且是用戶輸入的結(jié)果或者是在different<action>元素中標識的轉(zhuǎn)發(fā)的結(jié)果。
          type
               指定在發(fā)出請求時調(diào)用其執(zhí)行方法的操作類的全限定名。該類必須在類路徑中。
             注:不指定要實例化的類,可以通過使用forward屬性來轉(zhuǎn)發(fā)請求,該屬性在“Struts貿(mào)易樣本”中未使用,并且與后面描述的<forward>子元素不相同。
          name
               用于保存發(fā)送至HTML表單或接收自HTML表單的數(shù)據(jù)表單bean的名稱。
             input
               指定相對URL(例如,“/register.do”或“/index.jsp”)必須包括后綴,
          如果表單bean的驗證方法指示發(fā)生了輸入錯誤,則會調(diào)用URL;有關(guān)詳細信息,參見下節(jié)的“驗證”。
             scope
                   指定將對表單 bean的引用存儲在哪個作用域中。其值為“會話”(缺省值)或“請求”。
               Struts配置文件中的每個<action>元素還包括子元素<forward>,它指定從方法結(jié)果至后續(xù)調(diào)用的映射。每個<forward>子元素都包括下列屬性
            name 
          指定導致在運行時使用當前映射的字符串(例如,“success”),但是
          只限于以下情況:在 type 中引用的操作類的執(zhí)行方法使用完全相同
          的字符串來配置返回至ActionServlet的 ActionForward對象。下面
          的執(zhí)行方法不是很重要,但是會導致使用“success”映射:
            
           public ActionForward exectue(
             ActionMapping mapping,
             ActoinForm form,
             HttpServletRequest request,
             HttpServletResponse response)
             Throws IOException,ServletException

             ActionForward forward=new ActionForward();
             Forward=mapping,findForward(“success”);
             return(forward);

               path
                    指定非限定URL(例如,“/home.do” 或“/index.jsp”)必須包括文件擴展名,僅當使用當前映射時才會調(diào)用該URL,轉(zhuǎn)發(fā)操作類是根據(jù)different<action>元素中的屬性來處理的,尤其是,在其path屬性標識相同URL的<action>元素中。

              有必要提一下的是,在struts1.1中,提出了對Multiple Application Support。在struts的早先版本中,只有一個struts配置文件,一般叫struts-config.xml。但是,對于越來越復雜的應(yīng)用系統(tǒng)的發(fā)展,只有一個地方存放這個一個文件,對大型項目來說,使用和修改這個配置文件,使其成為了一個應(yīng)用的瓶頸問題。在struts1.1中,你可以定義多了配置文件協(xié)同工作。

          posted on 2005-10-27 16:26 Sung 閱讀(755) 評論(0)  編輯  收藏 所屬分類: Struts
          主站蜘蛛池模板: 乌鲁木齐市| 定安县| 壶关县| 谢通门县| 江川县| 朝阳县| 克什克腾旗| 南京市| 呼伦贝尔市| 山东省| 扬中市| 乳源| 普格县| 海盐县| 大石桥市| 民丰县| 枣阳市| 湾仔区| 开封市| 宜川县| 东丰县| 白玉县| 宜兰市| 公主岭市| 从江县| 若羌县| 曲沃县| 都昌县| 濮阳市| 勐海县| 紫阳县| 龙里县| 安宁市| 凌云县| 莲花县| 长子县| 本溪| 济阳县| 金平| 万州区| 上饶县|