posts - 1,  comments - 1,  trackbacks - 0
          path屬性 ActionMapping URI,或者path,對用戶來說就象web server上的一個文件。但實際上它并不 代表一個文件。它是一個對ActionMapping的虛擬引用。 因為它暴露給其它系統(tǒng), path 并不真正是個邏輯名稱,就象那些我們用于ActionForward 中的一樣。 path 可以包括反斜杠和擴展名--如果它引用一個文件系統(tǒng)——但它們都只是 一個單一名稱的一部分。 ActionMapping自身是一個“平面的” 名稱空間,完全沒有內(nèi)部層次關(guān)系。它僅僅是正好使用 了一個和層次性文件系統(tǒng)中一樣的名稱而已。 當然, 這對處理ActionMapping仍然是有幫助的,就象它們是一個層次關(guān)系或者在同一個"文 件夾"下的相關(guān)命令組的一部分。唯一的限制是名稱必須匹配于在應(yīng)用部署描述文件中為 ActionServlet指定的樣式。這通常是/do/*或者 *.do,但是其它相似的樣式也可以使用。如果 你在一個團隊環(huán)境中工作,不同的團隊可能有不同的 ActionMapping 名稱空間使用。某些 人可能工作于/customer ActionMapping, 而另一些可能工作于/vendor ActionMapping。 這也可能和各個團隊使用的Java 包的層次相關(guān)。因為 ActionMapping URI是邏輯的構(gòu)造, 所以你可以用它來以各種方式組織來適合你的項目。 forward 屬性 當指定了forward 屬性時,servlet將不會把請求傳遞給Action類,而是調(diào)用 RequestDispatcher.forward。因為操作沒有使用Action 類, 它也可以被用來進行 Struts 和其它資源之間的集成,或者用來構(gòu)建系統(tǒng)原型。forward, include, 以及 type 屬性是互斥的 include 屬性 當指定了include 屬性時, servlet將不會把請求傳遞給Action 類而是調(diào)用 RequedtDispatcher.include方法。因為操作沒有使用Action 類, 它也可以被用來機械 進行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 放入請求或者會話上下文時使用的名稱。使 用該類的attribute 屬性來指定不同的屬性(Attribute)關(guān)鍵字。 roles屬性 這個屬性是一個逗號分隔的,允許訪問該ActionMapping 對象的安全角色稱的列表。缺省情 況下,與基于容器的安全機制所使用的同一個系統(tǒng)將用于這里給定的角色列表。這意味著你 可以通過在部署描述符中指定特定的URL模板而使用基于action的安全,或者兩者都使用。 安全檢查由請求處理器(org.apache.struts.action.RequestProcessor)的 processRoles方法處理。通過子類化請求處理器,你也可以在基于應(yīng)用的安全下使用 roles 屬性。 scope屬性 ActionForm bean 可以存儲在當前的請求或會話范圍中(這樣它可以服務(wù)于另外的請求)。 雖然大部分開發(fā)人員使用請求范圍來存儲ActionForm, 框架的缺省設(shè)置卻是會話范圍 validate屬性 ActionForm 生命周期內(nèi)的一個重要步驟是在其數(shù)據(jù)提供給業(yè)務(wù)層之前需要進行校驗。當 mapping 的validate 屬性設(shè)置為true時,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屬性 當validate被設(shè)置為true時,重要的是需要提供一個有效的輸入路徑。這也是當ActionForm validate 方法返回 false時,控制應(yīng)該被傳遞到的地方。通常這是一個表現(xiàn)頁面。有時也 可以是另外一個用來產(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能夠在運行時被配置。許多標準的Struts Action都使用 這個屬性,標準的Scaffold Action也經(jīng)常使用它。Parameter屬性可以包含URI, 方法名稱,類 名稱,或者其它一些Action在運行時可能需要的信息。這種靈活性允許一些Action履行雙倍 或者三倍的職責,削減應(yīng)用所需的不同的類的數(shù)量。 在一個Action 類中,parameter屬性是從傳遞到perform的mapping中取得的: parameter = mapping.getparameter(); attribute屬性 不時地,你可能需要同時在同一個上下文中保存同一個ActionForm 的在兩份拷貝。這在 ActionForm被存于會話上下文中作為工作流的一部分時,經(jīng)常發(fā)生這種情況。為了避免它們 之間的名稱沖突,你可以使用 attribute 屬性來給一個 ActionForm bean 一個不同的名 稱。另一個方法是在配置中定義另一個ActionForm bean,使用相同的類型但使用不同的名稱。 prefix和suffix屬性 與 attribute屬性一樣, prefix 和suffix 屬性可用來避免應(yīng)用系統(tǒng)中的名稱沖突。如 果指定了這個屬性,這就表明允許在屬性名稱前面加上前綴或者后綴,形成它們從請求中被 組裝時的一個別名。 如果指定了前綴 this,那么在ActionForm組裝時: thisName=McClanahan 相當于 name=McClanahan 而它們都可以通過調(diào)用 getName("McClanahan"); 取得。這并不影響屬性如何被標簽擴展輸出。它只影響到自動組裝機制如何從請求中感知它們 unknown ActionMapping 在Web上沖浪時,大都遇到過討厭的404— pages not found信息。大部分web server 都提供一些特殊的特征來處理對未知頁面的請求,所以 webmaster 可以將用戶引導到正確的方向上。 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里做驗證要寫input,validate.
          posted on 2006-08-30 17:38 今夕何夕 閱讀(962) 評論(1)  編輯  收藏

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導航:
           
          主站蜘蛛池模板: 红桥区| 乐平市| 青铜峡市| 高青县| 屯留县| 资兴市| 苍南县| 察隅县| 新乐市| 瑞安市| 芦溪县| 庆元县| 宿州市| 淳安县| 凤山县| 云浮市| 龙川县| 凤庆县| 易门县| 巴里| 齐齐哈尔市| 城市| 潼关县| 银川市| 揭阳市| 确山县| 普兰店市| 石狮市| 克拉玛依市| 凤庆县| 吉水县| 军事| 大渡口区| 布拖县| 滨海县| 钦州市| 三都| 孙吴县| 长沙县| 余庆县| 大方县|