大大毛 的筆記

            DDM's Note

          哪怕沒有辦法一定有說法,
          就算沒有鴿子一定有烏鴉,
          固執無罪 夢想有價,
          讓他們驚訝.

          posts - 14, comments - 23, trackbacks - 0, articles - 58
             :: 首頁 ::  :: 聯系 ::  :: 管理

          日歷

          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          公告

          果然是不能想得太好。

          隨筆分類(4)

          積分與排名

          • 積分 - 60603
          • 排名 - 870

          最新評論

          精通Struts筆記--04.01

          Posted on 2006-08-02 11:42 大大毛 閱讀(769) 評論(0)  編輯  收藏 所屬分類: Struts

          ???Struts應用的配置
          ??????Struts的配置是兩個文件web.xml以及struts配置文件

          ?????? 1.web.xml
          ?????????配置ActionServlet,其方法與配置普通的Servlet一致,涉及的元素是<servlet> (名稱,類,參數),<servlet-mapping> (servlet所要處理的URL),<taglib> (客戶化標簽庫)
          這里 ActionServlet配置
          ??????可以看到,<servlet>標簽與<servlet-mapping>相對應,由于Struts只支持配一個ActionServlet,因此只能出現一對。
          ??????ActionServlet支持用戶類,只需要改變這里的<servlet-class>即可使用自定義類;
          ??????<servlet>/<init-param>標簽中,config代表Struts配置文件所在的位置,這里需要注意 config/moduleA的寫法,它代表著一個模塊moduleA以及支持該模塊的配置文件
          ??????<init-param>可以具有多個,在這里可以保存一些客戶化的參數,使用servlet.getInitParameter("paramname")的方式即可以取得。
          ??????<url-parttern>代表該servlet所要處理的URL,支持通配符,*.do代表所有以 .do 為后綴的請求都交由該servlet來處理

          標簽庫配置
          ??????<taglib-uri>:指定標簽庫的相對或絕對URI地址,即在JSP頁面中引用標簽時,需與之對應;
          ??????<taglib-location>:指定標簽庫的物理位置,即實際存放在什么地方。

          歡迎文件配置
          ??????<welcome-file>:web應用的歡迎文件,即只輸入了應用的根目錄時響應的文件,按先后順序查找;
          ??????該元素不能被配置成Action,如果有此需要的話則應在這里配置一個JSP,并在JSP里面<logic:forward name="key" />進行跳轉

          錯誤代碼配置
          ??????<error-page>:指定web出錯后的處理頁面,常見的錯誤多是404:找不到目錄或文件,500:服務器內部錯誤;
          ??????<error-code>:指定需要處理的錯誤號;
          ??????<location>:指定出錯后跳轉的處理頁面,這里可以設置JSP頁面。

          異常捕獲配置
          ??????捕獲的異常:
          ?????????RuntimeException 或 Error
          ?????????ServletException
          ?????????IOException


          ??????
          2.Struts配置文件
          ?????????Struts配置的相關類位于org.apache.struts.config包中,其中ModuleConfig接口是整個樹的頂點,各種配置信息都放入ModuleConfig的實現類中(由于存在著多模塊,因此會有多個實現)。因此從ModuleConfig接口中可以取得各種配置信息,當然需要先通過selectModule()來選擇需要操作的具體實現。
          ?????????還需要注意的一點就是在Struts配置文件里面DTD文件嚴格定義了各個元素出現的先后順序。
          datasources元素
          ??????<data-sources>:配置應用的數據源,可以包含多個<data-source>子標簽
          ??????<data-source>:數據源的參數,由于可以有多個數據源,因此<data-source>有一個屬性 key 用于區分,如果沒有 key 屬性,Struts將此做為缺省的數據源,該缺省數據源實際上也是有 key 值的,對應于Globals.DATA_SOURCE_KEY的值,實際值是 "org.apache.struts.action.DATA_SOURCE"字串。
          ?????????:key 屬性的值不允許重復,自行指定key屬性后,在Action中操作為 this.getDataSource(request,key),在其它地方則需要從ServletContext(application范圍)中用 (DataSource)getAttribute(key),參數key的值與該屬性值完全相同,因此在配置文件中該屬性應該具有一定的區別性,如"datasource.other"等,以避免在引用時出現麻煩,另外如果在配置文件中各個data-source都配置了key屬性,那么在應用僅能通過對應的key值進行調用,而不會存在著缺省數據源("org.apache.struts.action.DATA_SOURCE");
          ?????????:使用Myeclipse插件配DBCP時還需要手工修改
          幾處 。

          這里 form-beans元素(普通)
          ??????<form-beans>:配置ActionForm,可以包含多個<form-bean>子標簽
          ??????<form-bean>:ActionFormBean的參數。
          ?????????className:該標簽對應的配置類,Struts中與之對應的類是"org.apache.struts.config.FormBeanConfig",有需要時也可自行指定
          ?????????name:該ActionForm的唯一標識符
          ?????????type:ActionForm的類名

          form-bean元素(動態)
          ??????<form-bean>:動態的ActionForm的type="org.apache.struts.action.DynaActionForm"或子類;
          ??????<form-property>:配置ActionForm的成員屬性
          ?????????name:屬性名稱
          ?????????type:屬性類型,必須是對象類型。如果是Java簡單數據類型需要使用包裝類
          ?????????inital:初始值,可缺省,與類的屬性可以不用初始化的特性相同
          ??????另:這個動態ActionForm還很有些名堂,現在只能逐步推進了

          這里 global-exceptions元素
          ??????<global-exception>:配置全局異常處理,可以包含多個<exception>子標簽,其配置方法與局部(Action)異常配置相同,但是作用域不同,類似于Java類的成員屬性與同名方法形參作用域之間的關系,對照想想setter就清楚了
          ??????<exception>:配置異常處理
          ?????????className:與<exception>標簽對應的配置類,缺省是"org.apache.struts.config.ExceptionConfig";
          ?????????handler:異常處理類,缺省是"org.apache.struts.action.ExceptionHandler";
          ?????????key:描述異常的消息在資源文件中的key;
          ?????????bundle:資源文件,可缺??;
          ?????????path:Struts捕獲到指定類型的異常后,轉發的處理路徑;
          ?????????scope:ActionMessages實例的存放范圍,缺省為"request",還可取值"session";
          ?????????type:異常的類型

          這里 global-forwards元素
          ??????<global-forwards>:配置全局forward,可包含多個<forward>子標簽。
          ??????<forward>:配置forward
          ?????????className:與<forward>標簽對應的配置類,缺省為"org.apache.struts.action.ActionForward";
          ?????????contextRelative:缺省值為"false",表示path相對于應用;當取值為"true"時,表示path屬性給出的是相對于當前上下文的URL,如果配置用于子模塊之間切換的forward,則此項需設為"true";
          ?????????name:名稱;
          ?????????path:轉發的路徑,必須以"/"打頭
          ?????????redirect:缺省值為"false",表示請求轉發,取值"true"時,表示重定向,子模塊切換用的forward,此項需設為"true"?

          action-mappings元素
          ??????<action-mappings>:配置Action,可包含多個<action>子標簽
          ??????<action>:配置Action
          ?????????className:標簽對應的配置類,缺省為"org.apache.struts.action.ActionMapping"
          ?????????attribute:name屬性所對應的ActionForm實例的 key ,通過這個attribute操作它,如 (LoginForm)request.getAttribute("loginForm"); ;
          ?????????input:輸入URL,轉發到該 Action 時如果 ActionForm.validate() 檢驗失敗,Action 將把請求轉發到該URL,請看?;
          ?????????name:與Action對應的ActionForm的 name ,與<form-bean>標簽的name屬性相匹配;
          ?????????path:Action的訪問路徑,必須以"/"打頭,不需要后綴
          ?????????scope:與Action對應的ActionForm的存在范圍,缺省是"session",可取值"request";
          ?????????validate:是否需要調用ActionForm的 validate() 方法進行檢驗,缺省是"true",可取值"false",ActionForm將不會對提交的數據進行表單校驗;
          ?????????parameter:可附加的參數,在Action中可以用 mapping.getParameter() 來獲?。?br />?????????roles:指定允許調用該Action的安全角色,與容器設置的安全角色匹配,由容器來判斷;
          ?????????unknown:表示是否處理用戶發出的所有無效的Action URL,默認為"false";
          ?????????type:Action的類名;
          ?????????forward:指定轉發的URL,相當于使用ForwardAction
          ?????????include:指定包含的URL,相當于使用IncludeAction
          ?????????<exception>:Action局部異常捕獲,參看<global-exceptions>小節
          ?????????<forward>:Action局部forward,參看<global-forwards>小節
          ??????注意:
          ?????????<action>標簽的type,forward,include三種屬性互斥。

          controller元素
          ??????<controller>:配置ActionServlet
          ?????????className:標簽的配置類,缺省為"org.apache.struts.config.ControllerConfig";
          ?????????contentType:指定響應結果的內容類型和字符編碼,如果在Action和JSP中設置將會覆蓋掉該設置;
          ?????????locale:指定是否把 Locale 對象保存到session中,默認值為"false";
          ?????????nochache:是否在客戶端緩存,缺省為"false",可選"true",struts將在響應中加入特定的頭參數以防止頁面被緩存
          ?????????processorClass:指定負責處理 Request 的類,缺省為"org.apache.struts.action.RequestProcessor",如果有多模塊則應在各模塊指定自己的處理類;
          ?????????bufferSize:指定上傳文件的輸入緩沖,默認為"4096";
          ?????????tempDir:指定處理上傳文件的臨時工作目錄,Servlet容器可以自行分配。

          message-resources元素
          ??????<messge-resources>:配置資源文件,這個標簽與以上的幾個有點不同,他本身可以存在多個
          ?????????className:標簽的配置類,缺省為"org.apache.struts.config.MessageResourcesConfig";
          ?????????factory:資源的工廠類,缺省為"org.apache.struts.util.PropertyMessageResourcesFactory";
          ?????????key:指定 Resource Bundle 存放在 ServletContext 中的 key,缺省為Globals.MESSAGES_KEY的值 "org.apache.struts.MESSAGE" ,可以自行指定key,使用如resource.bundle01加以區別,可通過 (MessageResources)servletContext.getAttribute(key) 拿到,Struts提供的客戶化標簽中常??梢砸姷揭粋€ bundle 屬性,該屬性即對應于這里的 key 值;
          ?????????null:指定如何處理未知的消息,缺省為"true",返回空字串,可選"false",將返回類似"???key???"的字串;
          ?????????parameter:資源文件的存放路徑。

          plug-in元素
          ??????<plug-in>:配置插件,className屬性指定具體的插件類,struts配置文件中可配置多個插件,初始化順序由書寫順序決定;
          ??????<set-property>:設置插件的屬性,可具有多個,該插件類必須實現與本屬性對應的setter/getter,在Struts初始化時自動set。
          ??????插件必須實現 org.apache.struts.action.PlugIn 接口,該接口具有兩個方法:
          public?void?init(ActionServlet?servlet,ApplicationConfig?config)?throws?ServletException;
          ??????init方法將于Struts應用啟動時被調用,是一個初始化客戶資源的接口,而且由Struts傳入的參數也便于設置各種環境。

          public?void?destroy();
          ??????destroy方法于Struts應用關閉時調用,是一個釋放客戶資源的接口。


          ??????多應用模塊的配置
          ??????多應用模塊的劃分有助于應用的并行開發,提高效率。
          ??????步驟:
          ?????????1.為每個子應用創建單獨的 Struts 配置文件;
          ?????????2.在 web.xml 中配置每個子應用的信息,參看 這里 ;
          ?????????3.應用中實現切換:<forward> 或 在<action>標簽中使用 SwitchAction 來實現切換

          i am ddm

          主站蜘蛛池模板: 富民县| 诸暨市| 嵊泗县| 临桂县| 赤壁市| 日照市| 黄陵县| 台东县| 镇江市| 惠安县| 富阳市| 日照市| 厦门市| 西平县| 安溪县| 常州市| 平定县| 海原县| 保山市| 德安县| 苏尼特右旗| 铜梁县| 高邮市| 贵南县| 崇左市| 莱西市| 明星| 会同县| 台中县| 石狮市| 桃园县| 抚远县| 泸水县| 陵川县| 秭归县| 屏山县| 文昌市| 乐昌市| 丹江口市| 库车县| 文水县|