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

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

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

    大大毛 的筆記

      DDM's Note

    哪怕沒(méi)有辦法一定有說(shuō)法,
    就算沒(méi)有鴿子一定有烏鴉,
    固執(zhí)無(wú)罪 夢(mèng)想有價(jià),
    讓他們驚訝.

    posts - 14, comments - 23, trackbacks - 0, articles - 58
       :: 首頁(yè) ::  :: 聯(lián)系 ::  :: 管理

    精通Struts筆記--04.01

    Posted on 2006-08-02 11:42 大大毛 閱讀(766) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): Struts

    ???Struts應(yīng)用的配置
    ??????Struts的配置是兩個(gè)文件web.xml以及struts配置文件

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

    標(biāo)簽庫(kù)配置
    ??????<taglib-uri>:指定標(biāo)簽庫(kù)的相對(duì)或絕對(duì)URI地址,即在JSP頁(yè)面中引用標(biāo)簽時(shí),需與之對(duì)應(yīng);
    ??????<taglib-location>:指定標(biāo)簽庫(kù)的物理位置,即實(shí)際存放在什么地方。

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

    錯(cuò)誤代碼配置
    ??????<error-page>:指定web出錯(cuò)后的處理頁(yè)面,常見(jiàn)的錯(cuò)誤多是404:找不到目錄或文件,500:服務(wù)器內(nèi)部錯(cuò)誤;
    ??????<error-code>:指定需要處理的錯(cuò)誤號(hào);
    ??????<location>:指定出錯(cuò)后跳轉(zhuǎn)的處理頁(yè)面,這里可以設(shè)置JSP頁(yè)面。

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


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

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

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

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

    這里 global-forwards元素
    ??????<global-forwards>:配置全局forward,可包含多個(gè)<forward>子標(biāo)簽。
    ??????<forward>:配置forward
    ?????????className:與<forward>標(biāo)簽對(duì)應(yīng)的配置類(lèi),缺省為"org.apache.struts.action.ActionForward";
    ?????????contextRelative:缺省值為"false",表示path相對(duì)于應(yīng)用;當(dāng)取值為"true"時(shí),表示path屬性給出的是相對(duì)于當(dāng)前上下文的URL,如果配置用于子模塊之間切換的forward,則此項(xiàng)需設(shè)為"true";
    ?????????name:名稱;
    ?????????path:轉(zhuǎn)發(fā)的路徑,必須以"/"打頭
    ?????????redirect:缺省值為"false",表示請(qǐng)求轉(zhuǎn)發(fā),取值"true"時(shí),表示重定向,子模塊切換用的forward,此項(xiàng)需設(shè)為"true"?

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

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

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

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

    public?void?destroy();
    ??????destroy方法于Struts應(yīng)用關(guān)閉時(shí)調(diào)用,是一個(gè)釋放客戶資源的接口。


    ??????多應(yīng)用模塊的配置
    ??????多應(yīng)用模塊的劃分有助于應(yīng)用的并行開(kāi)發(fā),提高效率。
    ??????步驟:
    ?????????1.為每個(gè)子應(yīng)用創(chuàng)建單獨(dú)的 Struts 配置文件;
    ?????????2.在 web.xml 中配置每個(gè)子應(yīng)用的信息,參看 這里
    ?????????3.應(yīng)用中實(shí)現(xiàn)切換:<forward> 或 在<action>標(biāo)簽中使用 SwitchAction 來(lái)實(shí)現(xiàn)切換

    i am ddm

    主站蜘蛛池模板: 亚州免费一级毛片| 精品国产亚洲一区二区在线观看 | 97人伦色伦成人免费视频 | 亚洲午夜福利精品久久| 特色特黄a毛片高清免费观看| 成人国产精品免费视频| 中文字幕无码播放免费| 亚洲中文字幕人成乱码 | 卡一卡二卡三在线入口免费| 亚洲区日韩区无码区| eeuss草民免费| 亚洲精品无码成人AAA片| 亚洲欧美日韩一区二区三区| 成人午夜18免费看| 美女黄网站人色视频免费| 免费很黄很色裸乳在线观看| 亚洲剧情在线观看| 好吊妞在线新免费视频| 黄色一级毛片免费看| 日韩va亚洲va欧洲va国产| 污视频网站在线观看免费| 免费看污成人午夜网站| 亚洲成A人片777777| 最新黄色免费网站| 日韩欧美亚洲国产精品字幕久久久| 国产免费人成视频在线观看| 两个人的视频www免费| 亚洲综合一区二区国产精品| 成在人线av无码免费高潮水| 亚洲四虎永久在线播放| 成人免费男女视频网站慢动作| 无码 免费 国产在线观看91| 亚洲av无码一区二区三区不卡| 一个人看的免费高清视频日本| 性感美女视频在线观看免费精品 | 亚洲色中文字幕无码AV| 综合久久久久久中文字幕亚洲国产国产综合一区首| 麻豆一区二区三区蜜桃免费| 久久精品国产亚洲av麻豆 | 免费看大美女大黄大色| 国产JIZZ中国JIZZ免费看|