- Java EE框架開發技術與案例教程
- 張繼軍 董衛
- 2311字
- 2020-05-28 14:20:32
3.4 Struts 2的配置
Struts 2框架提供了多種配置文件,主要有web.xml、strus.xml和struts-default.xml等,在本節中將重點介紹strus.xml配置項及配置內容,其他配置文件只給出簡單說明。
3.4.1 web.xml配置文件
使用Struts 2框架,必須在web.xml中配置支持Struts 2的主控制器。目前所使用的主控制器是StrutsPrepareAndExecuteFilter類,主要負責接收所有請求,并按規定的過濾要求執行相應的請求,在web.xml配置文件中配置,系統啟動時,自動創建該控制器。
具體配置格式與配置內容見3.2節。
3.4.2 struts-default.xml配置文件
struts-default.xml文件是Struts 2框架默認加載的配置文件,該文件存放在struts2-core.jar中,可以從中查找Struts 2默認的各種配置信息。
該配置文件提供了一些標準的核心配置,Struts 2的很多核心功能都是通過攔截器來實現的,例如,從請求中把請求參數封裝到Action、文件上傳和數據驗證等都是通過攔截器實現的。struts-default定義了這些攔截器和result類型。
Struts 2每次啟動都會自動加載struts-default.xml文件,需要在配置文件struts.xml中繼承在struts-default.xml中配置的包struts-default即可。具體使用格式見【例3-2】中所給出的配置信息。
3.4.3 struts.xml配置文件
struts.xml配置文件是Struts 2框架默認的核心配置文件。Struts 2應用的各個組件及其關系均在該文件中聲明并配置。
struts.xml配置文件的主要配置項有:常量配置、導入(包含)配置文件、包配置及包配置下的Action配置。
struts.xml配置文件的基本結構如下。

1.常量配置
在開發階段或運行階段,可以設置一些常量(屬性)值,設置Struts 2運行或開發時的環境,從而滿足需求。
常量配置格式如下。
<constant name="屬性名" value="屬性值"/>
其中:name用于指定常量(屬性)的名稱;value用于指定常量的值。
例如,常用的一些常量如下。
<! --指定應用的編碼集,相當于調用HttpServletRequest.setCharacterEncodint方法--> <constant name="struts.i18n.encoding" value="UTF-8" /> <! --設置瀏覽器是否緩存靜態內容,建議:開發時關閉,運行時開啟--> <constant name="struts.serve.static.browserCache" value="false" /> <! --當struts.xml配置文件修改后,系統是否重新加載該文件,開發階段打開此功能--> <constant name="struts.configuration.xml.reload" value="true" /> <! --開發提示:出錯時打印更詳細的信息--> <constant name="struts.devMode" value="true" /> <! -- 指定請求的后綴可以是.do或.action,指定多個請求,后綴用逗號分隔--> <constant name="struts.action.extension" value="do, action"/>
注意:在開發環境中,最好進行以下配置。
struts.i18n.reload=true <-- 能夠重新加載國際化文件--> struts.devMode=true <-- 能夠在開發模式下提供更全面的調試--> <--重新加載XML配置文件,當Action修改之后自動重新加載--> struts.configuration.xml.reload = true
2.包配置
Struts 2框架中的核心組件就是Action、攔截器等,Struts 2框架使用包來管理Action和攔截器等。每個包就是多個Action、多個攔截器或攔截器引用的集合。在實際應用中,應該把一組業務功能相關的Action和攔截器放在同一個包下。
在struts.xml文件中,package元素用于定義包配置,包配置格式如下。
<package name="包名稱" namespace="/包的命名空間名" extends="struts-default"> 在該包下的Action配置 </package>
其中各屬性的含義如下。
● name屬性:配置包時必須指定name屬性,該name屬性值可以任意取名,但必須唯一。如果其他包要繼承該包,必須通過該屬性進行引用。
● namespace屬性:包的namespace屬性用于定義該包的命名空間,命名空間作為訪問該包下Action的路徑的一部分。默認的命名空間為“/”(空字符串)。
● extends屬性:通常每個包都應該繼承struts-default包,該包是在struts2-core-2.x.x.jar文件中的struts-default.xml中定義的,給出了Struts 2框架的核心配置信息。
例如下面給出包配置的代碼。

在該示例中,包名為abcde,命名空間為/user(注意:一定要有“/”)。繼承的是Struts 2在struts-default.xml中定義的包struts-default。
3.Action配置
Struts 2中Action類的配置能夠讓Struts 2知道Action的存在,并可以通過調用該Action來處理用戶請求。Struts 2使用包來組織和管理Action。
注意:Action配置必須配置在“包”下,在一個“包”下,可以配置多個Action。例如【例3-2】中的配置,就給出了2個Action的配置。
(1)Action的一般配置格式
<action name="名稱" class="Action對應的類全路徑名" method="Action中某方法名"> <result name="resultName" type="resultType">跳轉的目的地</result> </action>
<action>元素的常用屬性如下。
● name:指定客戶端發送請求的地址映射名稱,是必選項。
● class:指定Action對應的實現類,默認值為ActionSupport類。
● method:指定Action類中的處理方法名,默認值為Action中的execute方法。
(2)結果(result)配置
在Action配置項內含有Action的result子元素配置,用于當指定Action方法執行結束后,從該Action跳轉到目的地,結果配置格式如下。
<result name="resultName" type="resultType">跳轉到目的地</result>
<result>元素的常用屬性如下。
● name:指定Action邏輯視圖名稱,默認值為success。
● type:指定結果類型所定向到的文件類型:JSP文件、Action類等,默認為JSP頁面。
(3)result類型——type屬性及屬性值
type可以有多種選擇,Struts 2支持的處理結果類型如表3-2所示。
表3-2 Struts 2支持的常用的處理結果類型

在這里主要介紹dispatcher、redirect、chain和redirectAction,其他的就不具體講解了,若在自己開發的系統中需要,可以查找有關的材料。
1)dispatcher。dispatcher是默認類型,表示轉發到JSP頁面,如下面的代碼所示。
<result name="success" type="dispatcher">/common/message.jsp</result>
由于dispatcher是默認類型,可以省略默認值,其簡化格式如下。
<result name="success">/common/message.jsp</result>
由于name的默認值為success,所以還可以簡化為以下格式。
<result>/common/message.jsp</result>
2)redirect。類型redirect表示重定向到JSP頁面,配置方法與dispatcher類型的配置方法類似。
3)chain。類型chain表示轉發到Action,形成action-chain,按Struts 2框架所規定的執行次序進行過濾運行。該類型值的配置可以指定兩個屬性值。
● actionName指定轉向的Action名。
● namespace指定轉向的Action所在的命名空間。
格式如下。
<result name="resultName" type="chain"> <! -- 指定Action的命名空間——要轉向到其他命名空間的Action中,必須設置--> <param name="namespace">/要轉向到的命名空間名</param> <! -- 指定Action名 --> <param name="actionName">/要轉向到的Action名</param> </result>
若在同一個命名空間下,可以簡寫為以下格式。
<result name="resultName" type="chain">/要轉向到的Action名</result>
4)redirectAction。類型redirectAction表明是重定向Action,其配置方法與chain類似。
4.包含配置
Struts 2的配置文件struts.xml提供了<include/>元素,它能夠把其他程序員開發的配置文件包含過來,但是被包含的每個配置文件必須與struts.xml格式一樣。Struts 2框架將按照順序加載配置文件。包含配置格式如下。
<include file="文件名"/>
<include/>元素的屬性只有flie,用于指定配置文件名,是必選項
例如,在【例3-2】中,首先創建了配置文件struts-user.xml,在該配置文件中只給出了用戶登錄、注冊等操作的配置,然后將其包含到struts.xml文件中。
提示:在通常的應用開發中,為每個不同的模塊單獨配置一個“struts-模塊名稱.xml”文件,這樣也利于管理和維護。
- Data Visualization with D3 4.x Cookbook(Second Edition)
- SoapUI Cookbook
- AWS Serverless架構:使用AWS從傳統部署方式向Serverless架構遷移
- Visual Basic程序設計教程
- WordPress Plugin Development Cookbook(Second Edition)
- 實戰Java高并發程序設計(第3版)
- 量化金融R語言高級教程
- Azure Serverless Computing Cookbook
- Python 3 Object:oriented Programming(Second Edition)
- Mastering Leap Motion
- ASP.NET jQuery Cookbook(Second Edition)
- Java程序設計(項目教學版)
- Spring Microservices
- Tkinter GUI Application Development Blueprints
- Learning RSLogix 5000 Programming