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

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

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

    大大毛 的筆記

      DDM's Note

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

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

    精通Struts筆記--04.01

    Posted on 2006-08-02 11:42 大大毛 閱讀(767) 評論(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() 來獲取;
    ?????????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

    主站蜘蛛池模板: 亚洲男人第一av网站| 亚洲成人免费网址| 久久99精品免费一区二区| 老司机亚洲精品影院在线观看| 亚洲男人的天堂网站| 亚洲精品中文字幕无码A片老| 香蕉大伊亚洲人在线观看| 亚洲综合精品成人| 亚洲国产欧美一区二区三区| 亚洲AV女人18毛片水真多| 性色av极品无码专区亚洲| 老司机免费午夜精品视频| 免费人成在线观看播放a| 一区二区三区在线免费观看视频| 亚洲国产免费综合| 国产在线一区二区综合免费视频 | 久久久久亚洲精品男人的天堂| 亚洲Av无码乱码在线播放| 亚洲美日韩Av中文字幕无码久久久妻妇| 亚洲AⅤ优女AV综合久久久| 亚洲中文字幕丝袜制服一区| 亚洲日韩一页精品发布| 亚洲成在人天堂一区二区| 亚洲午夜精品国产电影在线观看| 99热亚洲色精品国产88| 国产亚洲精品美女久久久久 | 亚洲AV无码之国产精品| 免费人成大片在线观看播放| 日韩免费高清播放器| 24小时在线免费视频| 四虎成人免费影院网址| 亚洲国产激情一区二区三区| 国产成人亚洲综合无码精品| 亚洲不卡中文字幕| 国产亚洲男人的天堂在线观看| 一区二区三区在线免费观看视频| 伊人久久免费视频| 亚洲自国产拍揄拍| 国产亚洲精品美女久久久久久下载| 拍拍拍无挡视频免费观看1000| 99久久精品日本一区二区免费|