Starting Struts2--Core Components(2)
Posted on 2007-08-07 10:45 puras 閱讀(1088) 評(píng)論(0) 編輯 收藏 所屬分類: Struts2.0The Package Tag:
<package … />被用于配置集合,以便于共享屬性,例如攔截器棧或是URL命名空間.通常它由action的配置組成,但它可以包含任何類型的配置信息.它對(duì)隔離功能的組織也非常有用,可以更進(jìn)一步,將其分成不同的配置文件.
這個(gè)標(biāo)簽有如下屬性:
.name--開發(fā)人員為包指定的唯一的名稱
.extends--此包將擴(kuò)展的包的名稱;擴(kuò)展包里的所有配置信息(包含action配置),在新包里都是可用的,在新的命名空間之下.
.namespace--命名空間提供了一個(gè)URL到包的映射.例如,兩個(gè)不同的包,命名空間屬性分別是"package1"和"package2",URL看起來則是"/myWebApp/package1/my.action"和"/myWebApp/package2/my.action".
.abstract--如果這個(gè)屬性的值為"true",這個(gè)包則是真正的配置組,并且actions的配置將不能通過包名訪問.
確定選擇正確的父類包是非常重要的,以便一些必要的被預(yù)先配置的特征可供你使用.大多數(shù)的時(shí)候,這個(gè)父包都將是"struts-default.xml"配置文件中的"struts-default"包.然而,當(dāng)你使用插件時(shí),它將會(huì)不同.這時(shí),你將需要從插件的文檔中查換你所需要的父類包的名稱.
在本章剩余的部分,將討論包含在包標(biāo)簽內(nèi)的配置信息.
這里還有兩個(gè)額包的配置元素可以在<struts>標(biāo)簽內(nèi)使用.它們是<bean ... />和<constant … />標(biāo)簽.這些標(biāo)簽提供了更高級(jí)的路徑來重新定義框架.我們將在下一章討論插件的時(shí)候,再來討論這些標(biāo)簽的用法和配置方法.
Actions
Actions是大多數(shù)WEB應(yīng)用框架中的基本概念,并且它們是來自用戶的與HTTP相關(guān)請求的最基礎(chǔ)的工作單元.
在Struts2中,action有兩種不同的方式被使用.
Single Result
第一,并且是action的常用法,它完成工作,并總是返回一個(gè)結(jié)果.這種情況下,action看起來是這樣的:



2



3

4

5

有幾件事值得注意.第一,action類不需要擴(kuò)展另一個(gè)類并且它也不需要實(shí)現(xiàn)任何接口.對(duì)任何人來說,這個(gè)類就是一個(gè)簡單的POJO.
第二,這個(gè)類里有一個(gè)名為"execute"的方法.這個(gè)名稱是一個(gè)習(xí)慣用法.如果你想使用其他的名稱而不是"execute",僅僅需要更改一下action的配置文件.無論這個(gè)方法的名稱是什么,它都將返回一個(gè)字符串的結(jié)果代碼.Actions配置文件將匹配這個(gè)action返回的結(jié)果代碼到一個(gè)特定的結(jié)果,其呈現(xiàn)給用戶.如果需要,這個(gè)方法同樣可以拋出一個(gè)異常.
簡單的action的配置看起來是這樣的:

2

3

屬性"name"提供了執(zhí)行action的URL信息,在這里,URL則是"/my.action".擴(kuò)展名".action"在"struts.properties"配置文件里配置.屬性"class"提供了action所執(zhí)行的完整的包和類名.
Multiple Results
接下來,稍微復(fù)雜,action可以根據(jù)邏輯的結(jié)果返回不同的結(jié)果.與早先使用的相似的類看起來如下:



2



3



4

5



6

7

8

9

10

既然現(xiàn)在可以返回兩個(gè)不同的結(jié)果,我們則需要為每種情況配置一個(gè)結(jié)果返回給用戶.現(xiàn)在,配置將變成:

2

3

4

這里為結(jié)果代碼引入了一個(gè)新的"name"屬性.事實(shí)上,它是始終存在的.這個(gè)值(在第一個(gè)結(jié)果配置中)如果開發(fā)者沒有提供,則使用默認(rèn)值"success".
在上面的部分,我們看到了為action確定結(jié)果時(shí)使用常用的方法.然而,這里還有四種額外的選項(xiàng)可供您使用:
1.action方法返回一個(gè)字符串 - 這個(gè)被返回的字符串匹配在"struts.xml"配置文件中的一個(gè)action的配置.這個(gè)在上面的例子中展示過了.
2.代碼被之后的插件所利用 - 當(dāng)代碼被之后的插件使用時(shí),視圖模版則是使用action名稱和action返回的結(jié)果字符串相連接而創(chuàng)建的.例如,如果URL是"/adduser.action",并且action返回的是"success",此時(shí),"/adduser-success.jsp"將被呈現(xiàn)組用戶.更多此方面的信息請查看http://struts.apache.org/2.x/docs/codebehind-plugin.html.
3.使用@Result注釋 - action類可以使用@Results和@Result注釋來注釋多個(gè)不同的結(jié)果.Action返回的字符串需要匹配上一個(gè)注釋配置結(jié)果.
4.Action返回一個(gè)Result類的實(shí)例 - Action可以不需要返回一個(gè)字符串,替代的方案是返回一個(gè)配置好并可被使用的Result類的實(shí)例.
上一章:Starting Struts2--Core Components(1)
下一章:Starting Struts2--Core Components(3)