posts - 1,  comments - 1,  trackbacks - 0
            2006年8月30日
          path屬性 ActionMapping URI,或者path,對用戶來說就象web server上的一個文件。但實(shí)際上它并不 代表一個文件。它是一個對ActionMapping的虛擬引用。 因?yàn)樗┞督o其它系統(tǒng), path 并不真正是個邏輯名稱,就象那些我們用于ActionForward 中的一樣。 path 可以包括反斜杠和擴(kuò)展名--如果它引用一個文件系統(tǒng)——但它們都只是 一個單一名稱的一部分。 ActionMapping自身是一個“平面的” 名稱空間,完全沒有內(nèi)部層次關(guān)系。它僅僅是正好使用 了一個和層次性文件系統(tǒng)中一樣的名稱而已。 當(dāng)然, 這對處理ActionMapping仍然是有幫助的,就象它們是一個層次關(guān)系或者在同一個"文 件夾"下的相關(guān)命令組的一部分。唯一的限制是名稱必須匹配于在應(yīng)用部署描述文件中為 ActionServlet指定的樣式。這通常是/do/*或者 *.do,但是其它相似的樣式也可以使用。如果 你在一個團(tuán)隊(duì)環(huán)境中工作,不同的團(tuán)隊(duì)可能有不同的 ActionMapping 名稱空間使用。某些 人可能工作于/customer ActionMapping, 而另一些可能工作于/vendor ActionMapping。 這也可能和各個團(tuán)隊(duì)使用的Java 包的層次相關(guān)。因?yàn)?ActionMapping URI是邏輯的構(gòu)造, 所以你可以用它來以各種方式組織來適合你的項(xiàng)目。 forward 屬性 當(dāng)指定了forward 屬性時(shí),servlet將不會把請求傳遞給Action類,而是調(diào)用 RequestDispatcher.forward。因?yàn)椴僮鳑]有使用Action 類, 它也可以被用來進(jìn)行 Struts 和其它資源之間的集成,或者用來構(gòu)建系統(tǒng)原型。forward, include, 以及 type 屬性是互斥的 include 屬性 當(dāng)指定了include 屬性時(shí), servlet將不會把請求傳遞給Action 類而是調(diào)用 RequedtDispatcher.include方法。因?yàn)椴僮鳑]有使用Action 類, 它也可以被用來機(jī)械 進(jìn)行Struts 和其它組件之間的集成。forward, include, 以及 type 屬性是互斥的。 type 屬性 大部分 mapping都會指定一個 Action 類類型,而不是一個forward 或者 include。Action 類 可以被多個mapping使用。 Mapping可以指定form bean,參數(shù),forward,或者exceptions屬 性。forward, include, 以及 type 屬性是互斥的。 classname屬性 如果被指定,classname 是應(yīng)該用于此對象的ActionMapping子類的全限定Java類名稱。這 就允許你使用你自己的ActionMapping 子類來引入特定的方法和屬性。參見7.4節(jié)。 name屬性 如果在Struts 配置文件中配置了相應(yīng)的formbean段的話,這個屬性指定了form bean的 邏輯名稱。缺省情況下,這也是將form bean 放入請求或者會話上下文時(shí)使用的名稱。使 用該類的attribute 屬性來指定不同的屬性(Attribute)關(guān)鍵字。 roles屬性 這個屬性是一個逗號分隔的,允許訪問該ActionMapping 對象的安全角色稱的列表。缺省情 況下,與基于容器的安全機(jī)制所使用的同一個系統(tǒng)將用于這里給定的角色列表。這意味著你 可以通過在部署描述符中指定特定的URL模板而使用基于action的安全,或者兩者都使用。 安全檢查由請求處理器(org.apache.struts.action.RequestProcessor)的 processRoles方法處理。通過子類化請求處理器,你也可以在基于應(yīng)用的安全下使用 roles 屬性。 scope屬性 ActionForm bean 可以存儲在當(dāng)前的請求或會話范圍中(這樣它可以服務(wù)于另外的請求)。 雖然大部分開發(fā)人員使用請求范圍來存儲ActionForm, 框架的缺省設(shè)置卻是會話范圍 validate屬性 ActionForm 生命周期內(nèi)的一個重要步驟是在其數(shù)據(jù)提供給業(yè)務(wù)層之前需要進(jìn)行校驗(yàn)。當(dāng) mapping 的validate 屬性設(shè)置為true時(shí),ActionServlet將調(diào)用ActionForm的 validate 方 法。如果 validate 返回false,請求將被轉(zhuǎn)發(fā)到input 屬性指定的資源。 經(jīng)常,開發(fā)人員將為每個數(shù)據(jù)輸入表單創(chuàng)建兩個mapping。一個mapping 將使 validate 設(shè) 置為 false, 所以你可以創(chuàng)建一個空的表單。另一個則設(shè)置validate 為true,用來提交完整 的表單。 input屬性 當(dāng)validate被設(shè)置為true時(shí),重要的是需要提供一個有效的輸入路徑。這也是當(dāng)ActionForm validate 方法返回 false時(shí),控制應(yīng)該被傳遞到的地方。通常這是一個表現(xiàn)頁面。有時(shí)也 可以是另外一個用來產(chǎn)生頁面所需要的數(shù)據(jù)對象的Action path (其 validate 必須設(shè)置為 false)。 輸入轉(zhuǎn)發(fā) 在Struts 1.0中,ActionMapping的 input 屬性通常是一個字面的URI。在Struts 1.1中,它也 可以是一個ActionForward 的名稱。ActionForward 被獲取之后,其path 屬性被用作input 屬性。這也可以是一個全局或者局部轉(zhuǎn)發(fā)。 這兒為了使用 ActionForward而不是字面的path, 可以設(shè)置這個模塊的 元 素的inputForward 屬性為 true: parameter屬性 這個普通的paramenter屬性允許Action能夠在運(yùn)行時(shí)被配置。許多標(biāo)準(zhǔn)的Struts Action都使用 這個屬性,標(biāo)準(zhǔn)的Scaffold Action也經(jīng)常使用它。Parameter屬性可以包含URI, 方法名稱,類 名稱,或者其它一些Action在運(yùn)行時(shí)可能需要的信息。這種靈活性允許一些Action履行雙倍 或者三倍的職責(zé),削減應(yīng)用所需的不同的類的數(shù)量。 在一個Action 類中,parameter屬性是從傳遞到perform的mapping中取得的: parameter = mapping.getparameter(); attribute屬性 不時(shí)地,你可能需要同時(shí)在同一個上下文中保存同一個ActionForm 的在兩份拷貝。這在 ActionForm被存于會話上下文中作為工作流的一部分時(shí),經(jīng)常發(fā)生這種情況。為了避免它們 之間的名稱沖突,你可以使用 attribute 屬性來給一個 ActionForm bean 一個不同的名 稱。另一個方法是在配置中定義另一個ActionForm bean,使用相同的類型但使用不同的名稱。 prefix和suffix屬性 與 attribute屬性一樣, prefix 和suffix 屬性可用來避免應(yīng)用系統(tǒng)中的名稱沖突。如 果指定了這個屬性,這就表明允許在屬性名稱前面加上前綴或者后綴,形成它們從請求中被 組裝時(shí)的一個別名。 如果指定了前綴 this,那么在ActionForm組裝時(shí): thisName=McClanahan 相當(dāng)于 name=McClanahan 而它們都可以通過調(diào)用 getName("McClanahan"); 取得。這并不影響屬性如何被標(biāo)簽擴(kuò)展輸出。它只影響到自動組裝機(jī)制如何從請求中感知它們 unknown ActionMapping 在Web上沖浪時(shí),大都遇到過討厭的404— pages not found信息。大部分web server 都提供一些特殊的特征來處理對未知頁面的請求,所以 webmaster 可以將用戶引導(dǎo)到正確的方向上。 Struts 提供了一個類似的服務(wù)來處理404錯誤—即unknown ActionMapping。 在Struts 配置文件中,你可以指定一個ActionMapping 來接收所有與其它ActionMapping不相 匹配的請求: 如果沒有設(shè)置它,沒有匹配對的ActionMapping請求就會拋出: 400 Invalid path /notHere was Requested 請注意通過對ActionMapping請求, 我們的意思是URI首先必須匹配為servlet指定的前綴或者 后綴 (通常是 /do/* 或者 *.do)。對于其它樣式的請求, 無論好壞,都將被容器中的其它 servlet處理: /do/notHere (goes to the unknown ActionMapping) /notHere.txt(goes to the Container) 比較多,不過常用的也就是path,type,scope,name,parameter如果要在form里做驗(yàn)證要寫input,validate.
          posted @ 2006-08-30 17:38 今夕何夕 閱讀(962) | 評論 (1)編輯 收藏
          僅列出標(biāo)題  
          主站蜘蛛池模板: 濮阳市| 鄯善县| 永平县| 云林县| 重庆市| 清水河县| 磐石市| 濉溪县| 湘乡市| 托里县| 嘉义县| 宝坻区| 东乡| 镶黄旗| 综艺| 延长县| 株洲县| 庆元县| 北票市| 曲麻莱县| 墨玉县| 涪陵区| 天台县| 张家川| 合山市| 克什克腾旗| 永安市| 吴堡县| 射阳县| 江津市| 黄大仙区| 武城县| 南丹县| 鲁甸县| 城步| 玉屏| 柯坪县| 库车县| 曲麻莱县| 丽江市| 乐业县|