Web.xml 文件對(duì)于配置任何 Java Web 應(yīng)用都是必須的 . 當(dāng)配置 Struts 應(yīng)用時(shí) , 還應(yīng)該在 web.xml 文件中配置和 Struts 相關(guān)的配置選項(xiàng) . 一下講述配置 Struts 應(yīng)用的必要步驟 .
?
1 ·配置 Struts 的 ActionServlet
第一步用 <servlet> 元素來聲明 ActionServlet 。
在 <servlet> 的子元素中,經(jīng)常用到的有:
?? · <servlet-name> 元素用來定義 Servlet 的名稱。
?? · <servlet-class> 元素用來置頂 Servlet 的完整類名。
?? · <init-param> 元素用于配置 Servlet 初始化參數(shù)。
第二步為配置 <servlet-mapping> 元素,用來指定 ActionServlet 可以處理哪些 URL 。
有子元素 <servlet-name> 和 <url-pattern> ,注意,這里的 <servlet-name> 必須和 <servlet> 元素中的 <servlet-name> 匹配。
?
** 提示 **
? 不管應(yīng)用中包含多少子應(yīng)用,都只需要配置一個(gè) ActionServlet 。有些開發(fā)者希望設(shè)置多個(gè) ActionServlet 類來處理應(yīng)用中不同的功能,其實(shí)這是不必要的,因?yàn)?/span> Serlvet 本身支持多線程。而且,目前的 Struts 框架只允許在應(yīng)用中配置一個(gè) ActionSerlvet 。
?
2
·配置歡迎文件清單
<welcome-file-list>
元素中可以包含多個(gè)
<welcome-file>
子元素,當(dāng)
Web
容器調(diào)用
Web
應(yīng)用的歡迎文件時(shí),首先尋找第一個(gè)
<welcome-file>
指定的文件。如果這個(gè)文件存在,將把這一個(gè)文件返回給客戶;如果這個(gè)文件不存在,
Web
容器將依次尋找下一個(gè)歡迎文件,直到找到為止;如果都不存在,服務(wù)器將向客戶返回“
HTTP
?
3
·配置錯(cuò)誤處理
<error-page>
? <error-code></error-code>
? <location></location>
</error-page>
如果在 web.xml 文件中做了以上配置,當(dāng) Web 容器捕獲到錯(cuò)誤時(shí)(如: HTTP 404 、 HTTP 500 ),將根據(jù)錯(cuò)誤代碼減縮 <error-page> 的子元素 <error-code> ,如果有匹配項(xiàng)就返回 <location> 子元素指定的文件。
? 也可以為 Web 容器捕獲的 Java 異常配置 <error-page> 元素,這是需要設(shè)置 <exception-type> 子元素,它用于指定 Java 異常類。 Web 容器可能捕獲如下異常:
? · RuntimeException 或 Error 。
? · ServletException 或它的子類。
? · IOException 或它的子類。
這里的配置信息如下:
<error-page>
? <exception-type></exception-type>
? <location></location>
</error-page>
?
4
·配置
Struts
標(biāo)簽庫
<taglib> 元素有兩個(gè)子元素: <taglib-uri> 和 <taglib-location> 。 <taglib-uri> 元素指定標(biāo)簽庫的相對(duì)或者絕對(duì) URI 地址, Web 應(yīng)用將根據(jù)這一 URI 來訪問標(biāo)簽庫; <taglib-location> 元素指定標(biāo)簽庫描述文件在文件資源系統(tǒng)中的物理位置。
如果 Web 應(yīng)用中沒有使用 Struts 標(biāo)簽庫,就沒有必要在 web.xml 文件中配置它。此外,也可以按以上方式在 web.xml 文件中配置用戶自定義的客戶化標(biāo)簽庫
?
?
Struts配置文件簡(jiǎn)介
Struts?framework根據(jù)配置文件使得ServletAction,ActionMapping,Action , ActionForm這幾個(gè)不同層次的組件相互交互,協(xié)調(diào)的工作。這些配置文件是在系統(tǒng)啟動(dòng)的時(shí)候,讀入導(dǎo)內(nèi)存中,供控制器使用的。
Struts?framework主要包括三部分的配置描述,一個(gè)是指定有關(guān)Struts?Controller及其相關(guān)的的配置描述(Initialization?Parameters),一個(gè)對(duì)struts?tag?lib的描述,一個(gè)是struts組件(ActionMapping,Action,ActionForm)之間相互映射協(xié)調(diào)的關(guān)系
有關(guān)Struts?Controller及其相關(guān)的的配置描述
????因?yàn)镾truts?Controller的主要類ActionServlet是繼承自HttpServlet,所以必須像配置一個(gè)Servlet那樣在部署描述符(Web.xml)中配置ActionServlet類及其訪問映射。
????當(dāng)您第一次創(chuàng)建基于Struts的Web應(yīng)用程序時(shí),將為您創(chuàng)建一個(gè)部署描述符,這通常就足夠了。該文件包括下列條目:
?????<servlet>條目定義用于Web應(yīng)用程序的servlet(在本例中,這是唯一的servlet):
—??<servlet-name>?和<servlet-class>指示ActionServlet?(標(biāo)識(shí)為“操作”)接收HTTP請(qǐng)求并確定如何響應(yīng)。
—??<init-param>表示servlet初始化參數(shù).
-????“config”指示ActionServlet的行為由指定的配置文件來指導(dǎo),該配置文件通常具有以下名稱:
\WEB-INF\struts-config.xml
-????“debug”具有整數(shù)值,它指示將有關(guān)處理的詳細(xì)信息寫至控制臺(tái)的程度。
-????”detail”具有整數(shù)值,它指示將“映射”詳細(xì)信息(如后面所述)寫至控制臺(tái)的程度。
—??<load-on-startup>導(dǎo)致在啟動(dòng)應(yīng)用程序時(shí)裝入servlet。
?????<servlet-mapping>元素標(biāo)識(shí)這樣的命名模式:當(dāng)命名模式由URL進(jìn)行匹配時(shí),Web服務(wù)器就將控制權(quán)移交給ActionServlet。考慮下面各種情況:
—??訪問了ActionServlet,原因是“操作”(<servlet-mapping>中的<servlet-name>元素的內(nèi)容)與“操作”(<servlet>中的<servlet-name>元素的內(nèi)容)相匹配。
????—??<servlet-mapping>元素指定URL的結(jié)尾的命名模式。每個(gè)URL的開頭都是應(yīng)用程序上下文路徑。按照慣例,ActionServlet調(diào)用對(duì)象以響應(yīng)與命名模式“*do”(其中“*”是通配符)一致的URL。
?????<welcome-file-list>元素指示獲得初始控制權(quán)的特定于應(yīng)用程序的代碼;在本例中,Web服務(wù)器直接從Web?Content目錄中調(diào)用index.jsp。
?????<error-page>元素指示顯示哪個(gè)JSP來響應(yīng)錯(cuò)誤;在本例中,錯(cuò)誤為如下所示:
—??404??(找不到資源)
—??500??(Web服務(wù)器內(nèi)部發(fā)生錯(cuò)誤)
?????每個(gè)<taglib>元素都使相對(duì)URL(相對(duì)于Web.xml)與標(biāo)記庫描述符(相對(duì)于Web應(yīng)用程序根目錄)相關(guān)聯(lián)。每個(gè)JSP都可以使用同一個(gè)URL來表示給定的標(biāo)記庫,而Web.xml確定引用了哪個(gè)文件。
有關(guān)struts?tag?lib的配置描述
????如果你的web?application打算使用Struts的taglib,那么你有必要在web.xml中對(duì)struts?taglib進(jìn)行配置描述。
有關(guān)Struts?Action?Mapping的配置描述
???? 作為先前描述的web.xml設(shè)置的結(jié)果,Web應(yīng)用程序服務(wù)器將請(qǐng)求的一個(gè)子集按路徑發(fā)送至ActionServlet,它通常調(diào)用一系列操作和JSP。ActionServlet的響應(yīng)是基于配置文件struts-config.xml的內(nèi)容的。有關(guān)其DTD文檔的描述,請(qǐng)參考http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd
????一般struts-config(version1.1)包含了如下幾個(gè)部分:
(1)form-bean
????(2)global-forwards
????(3)action-mappings
????(4)data-sources
????我們知道,對(duì)于這樣的一個(gè)請(qǐng)求(例如,表示為“/login.do”),執(zhí)行下列步驟:
1、????尋找操作類對(duì)象(繼承org.?apache.struts.action.Action的類)
2、????ActionServlet調(diào)用操作類對(duì)象的執(zhí)行方法
操作類中的執(zhí)行方法的特征符為如下所示:
public?ActionForward??execute(
??????ActionMapping?mapping,
??????ActionForm?form,
??????HttpServletRequest?request,
??????HttpServletResponse?response)
?????映射對(duì)象(ActionMapping),它包含指示如何響應(yīng)方法的每個(gè)可能結(jié)果的規(guī)則(“映射”)
?????Struts表單bean(ActionForm),它保存發(fā)送至HTML表單或接收自HTML表單的數(shù)據(jù)
?????請(qǐng)求和響應(yīng)對(duì)象(HttpServletReques/?HttpServletResponse)
3、????從執(zhí)行方法返回ActionForward對(duì)象,用于指導(dǎo)ActionServlet接著訪問哪個(gè)操作類或JSP
返回的ActionForward對(duì)象中的信息取決于兩個(gè)值:
?????方法的結(jié)果(如在“成功”或“故障”等字符串中所述)
?????映射對(duì)象,它包含從Struts配置文件中讀取的信息
要弄明白某些運(yùn)行時(shí)關(guān)系,要明白struts-config.xml該文件包括下面的一組條目:
?????<form-beans>標(biāo)記標(biāo)識(shí)每個(gè)表單bean
?????<action-mappings>標(biāo)記包括用于指導(dǎo)應(yīng)用程序流的信息,每個(gè)<action>子標(biāo)記都使相對(duì)URL與操作類和潛在的后續(xù)操作相關(guān)。
Form-bean元素
Struts配置文件中的一個(gè)示例<form-bean>子元素為如下所示:
<form-bean?name=“registerForm”??type=“strutscommon.RegisterForm”/>
每個(gè)<form-bean>子元素都包括下列屬性:
name
表單bean的名稱,稍后在配置文件中會(huì)用到。ActionServlet舉例說明了該bean(如果需要的話)并在將對(duì)bean的引用存儲(chǔ)在請(qǐng)求或會(huì)話對(duì)象中時(shí)將該名稱用作鍵。
type
類的全限定名稱,它繼承org.apache.struts.action.ActionForm該類必須在類路徑中。接受“Struts貿(mào)易樣本”中的注冊(cè)的表單bean包括HTML注冊(cè)表單中每個(gè)字段的getter?和setter方法。該bean還包括驗(yàn)證方法,如下節(jié)“驗(yàn)證”中所述。
Action元素
???Struts配置文件中的一個(gè)示例<action>元素為如下所示:
<action?path=“/register”
????????type=“strutsEGL.RegisterAction”
???????name=“registerForm”
???????input=“/register.jsp”
???????scope=“request”
???????<forward?name=“success”path=“/home.do”/>
???????<?forward?name=“failure”path=“/register.jsp”/>
?????</action>
每個(gè)<action>元素都包括下列屬性中的某些屬性或所有屬性:
?path
?????將請(qǐng)求指定為非限定URL,不帶文件擴(kuò)展名(例如,“/register”)請(qǐng)求是根據(jù)<action>元素中的其它屬性來處理的,并且是用戶輸入的結(jié)果或者是在different<action>元素中標(biāo)識(shí)的轉(zhuǎn)發(fā)的結(jié)果。
type
?????指定在發(fā)出請(qǐng)求時(shí)調(diào)用其執(zhí)行方法的操作類的全限定名。該類必須在類路徑中。
注:不指定要實(shí)例化的類,可以通過使用forward屬性來轉(zhuǎn)發(fā)請(qǐng)求,該屬性在“Struts貿(mào)易樣本”中未使用,并且與后面描述的<forward>子元素不相同。
name
?????用于保存發(fā)送至HTML表單或接收自HTML表單的數(shù)據(jù)表單bean的名稱。
?input
?????指定相對(duì)URL(例如,“/register.do”或“/index.jsp”)必須包括后綴,
如果表單bean的驗(yàn)證方法指示發(fā)生了輸入錯(cuò)誤,則會(huì)調(diào)用URL;有關(guān)詳細(xì)信息,參見下節(jié)的“驗(yàn)證”。
?scope
?????????指定將對(duì)表單?bean的引用存儲(chǔ)在哪個(gè)作用域中。其值為“會(huì)話”(缺省值)或“請(qǐng)求”。
?Struts配置文件中的每個(gè)<action>元素還包括子元素<forward>,它指定從方法結(jié)果至后續(xù)調(diào)用的映射。每個(gè)<forward>子元素都包括下列屬性
name?
指定導(dǎo)致在運(yùn)行時(shí)使用當(dāng)前映射的字符串(例如,“success”),但是
只限于以下情況:在?type?中引用的操作類的執(zhí)行方法使用完全相同
的字符串來配置返回至ActionServlet的?ActionForward對(duì)象。下面
的執(zhí)行方法不是很重要,但是會(huì)導(dǎo)致使用“success”映射:
??
?public?ActionForward?exectue(
???ActionMapping?mapping,
???ActoinForm?form,
???HttpServletRequest?request,
???HttpServletResponse?response)
???Throws?IOException,ServletException
{
???ActionForward?forward=new?ActionForward();
???Forward=mapping,findForward(“success”);
???return(forward);
}
?????path
??????????指定非限定URL(例如,“/home.do”?或“/index.jsp”)必須包括文件擴(kuò)展名,僅當(dāng)使用當(dāng)前映射時(shí)才會(huì)調(diào)用該URL,轉(zhuǎn)發(fā)操作類是根據(jù)different<action>元素中的屬性來處理的,尤其是,在其path屬性標(biāo)識(shí)相同URL的<action>元素中。
????有必要提一下的是,在struts1.1中,提出了對(duì)Multiple?Application?Support。在struts的早先版本中,只有一個(gè)struts配置文件,一般叫struts-config.xml。但是,對(duì)于越來越復(fù)雜的應(yīng)用系統(tǒng)的發(fā)展,只有一個(gè)地方存放這個(gè)一個(gè)文件,對(duì)大型項(xiàng)目來說,使用和修改這個(gè)配置文件,使其成為了一個(gè)應(yīng)用的瓶頸問題。在struts1.1中,你可以定義多了配置文件協(xié)同工作。
Struts 框架在啟動(dòng)時(shí)會(huì)讀入其配置文件,根據(jù)它來創(chuàng)建和配置各種 Struts 組件。 Struts 配置文件使得開發(fā)者可以靈活地組裝和配置各個(gè)組件,提高了應(yīng)用軟件的可擴(kuò)展性和靈活性,可以避免硬編碼。 Struts 配置文件是基于 XML 的。
?
·
1
。
org.apache.struts.config
包
? 在 Struts1.1 中加入了 org.apache.struts.config 包。在 Struts 應(yīng)用啟動(dòng)時(shí),會(huì)把 Struts 配置文件中的配置信息讀入到內(nèi)存中,并把他們存放在 cofnig 包中相關(guān) JavaBean 類的實(shí)例中。
org.apache.struts.config 包中的每一個(gè)類都和 Struts 配置文件中特定的配置元素對(duì)應(yīng)。
在 Struts 框架完成了對(duì)配置文件的驗(yàn)證和解析后,就把配置文件中的信息存放在這些類的實(shí)例中。這些類的實(shí)例可以充當(dāng)配置信息的運(yùn)行時(shí)容器, Struts 組件可以方便地通過他們來獲取配置信息。
org.apache.struts.config.ModuleConfig 在 Struts 框架中扮演了十分重要的角色。它是整個(gè) org.apache.struts.config 包的核心,在 Struts 應(yīng)用運(yùn)行時(shí)用來存放整個(gè) Struts 應(yīng)用的配置信息。如果有多個(gè)子應(yīng)用,每個(gè)子應(yīng)用都會(huì)有一個(gè) ModuleConfig 對(duì)象。 ModuleConfig 和 Struts 配置文件的根元素 <struts-config> 對(duì)應(yīng)。 <struts-config> 根元素中包含 <form-bean> 、 <action> 和 <forward> 等一系列子元素,因此 ModuleConfig 中包含了和每個(gè)子元素對(duì)應(yīng)的配置類實(shí)例。
org.apache.struts.config.ConfigRuleSet 類的功能不同于其他類,它包含了解析 Struts 配置文件所需要的一組規(guī)則。在應(yīng)用啟動(dòng)時(shí),該類負(fù)責(zé)構(gòu)造 org.apache.struts.config 包中其他用于保存配置信息的 JavaBean 類的實(shí)例。
下面分別介紹 Struts 配置文件中每個(gè)元素的用法。
?
·
2
。
<struts-config>
元素
<struts-cofnig> 元素是 Struts 配置文件的根元素,和它對(duì)應(yīng)的配置類為 org.apache.struts.config.ModuleConfig 類。 <struts-config> 元素有 8 個(gè)子元素。
在 Struts 配置文件中,必須按照它的 DTD 指定的先后順序來配置 <struts-config> 元素的各個(gè)子元素,如果顛倒了這些子元素在配置文件中的順序,在 Struts 應(yīng)用啟動(dòng)時(shí)就會(huì)生成 XML 解析錯(cuò)誤。
?
·
3
。
<data-sources>
元素
<data-sources> 元素用來配置應(yīng)用所需要的數(shù)據(jù)源。數(shù)據(jù)源負(fù)責(zé)建立和特定數(shù)據(jù)庫的連接,許多數(shù)據(jù)源采用連接池機(jī)制實(shí)現(xiàn),以便提高數(shù)據(jù)庫訪問性能。 Java 語言提供了 javax.sql.DataSource 接口,所有的數(shù)據(jù)源必須實(shí)現(xiàn)該接口。許多應(yīng)用服務(wù)器和 Web 容器提供了內(nèi)在的數(shù)據(jù)源組件,很多數(shù)據(jù)庫廠商也提供了數(shù)據(jù)源的實(shí)現(xiàn)。
<data-sources> 元素包含零個(gè),一個(gè)或多個(gè) <data-source> 子元素。 <data-source> 元素用于配置特定的數(shù)據(jù)源,它可以包含多個(gè) <set-property> 子元素。 <set-property> 元素用于設(shè)置數(shù)據(jù)源的各種屬性。
<data-source> 元素的 type 屬性用來指定數(shù)據(jù)源的實(shí)現(xiàn)類。開發(fā)者應(yīng)該根據(jù)實(shí)際應(yīng)用的需要來選用合適的數(shù)據(jù)源實(shí)現(xiàn)。
配置了數(shù)據(jù)源后,就可以在 Action 類中訪問數(shù)據(jù)源。在 org.apache.struts.action.Action 類中定義了 getDataSource(HttpRequest) 方法,它用于獲取數(shù)據(jù)源對(duì)象的引用。
也可以在配置文件中聲明多個(gè)數(shù)據(jù)源,此時(shí)需要為每一個(gè)數(shù)據(jù)源分配唯一的 key 值,通過該值來標(biāo)識(shí)特定的數(shù)據(jù)源。
?
·
4
。
<form-beans>
元素
<form-beans> 元素用來配置多個(gè) ActionForm Bean 。 <form-beans> 元素包含零個(gè)或多個(gè) <form-bean> 子元素。每個(gè) <form-bean> 元素又包含多個(gè)屬性。
<form-bean> 元素的屬性
屬性 |
描述 |
className |
指定和 <form-bean> 元素對(duì)應(yīng)的配置類,默認(rèn)值為 org.apache.struts.config.FormBeanConfig 。如果在這里設(shè)置自定義的類,該類必須擴(kuò)展 FormBeanConfig 類 |
name |
指定該 ActionForm Bean 的唯一標(biāo)識(shí)符,整個(gè) Struts 框架用該標(biāo)識(shí)符來引用這個(gè) bean 。該屬性是必需的。 |
type |
指定 ActionForm 類的完整類名(類的報(bào)名也包含在內(nèi)),該屬性是必需的 |
?
? 如果配置動(dòng)態(tài) ActionForm Bean ,還必須配置 <form-bean> 元素的 <form-property> 子元素。 <form-property> 元素用來指定表單字段,它有四個(gè)屬性。
<form-property> 元素的屬性
屬性 |
描述 |
className |
指定和 <form-property> 元素對(duì)應(yīng)的配置類,默認(rèn)值為 org.apache.struts.config.FormPropertyConfig |
initial |
以字符串的形式設(shè)置表單字段的初始值。如果沒有設(shè)置該屬性,則基本類型的表單字段的默認(rèn)值為 0 ,對(duì)象類型的表單字段的默認(rèn)值為 null |
name |
指定表單字段的名字。該屬性是必需的 |
type |
指定表單字段的類型。如果表單資源為 Java 類,必須給出完整的類名。該屬性是必需的。 |
?
·
5
。
<global-exceptions>
元素
<global-exceptions> 元素用于配置異常處理。 <global-exceptions> 元素可以包含零個(gè)或者多個(gè) <exception> 元素。
<exception> 元素用來設(shè)置 Java 異常和異常處理類 org.apache.struts.action.ExceptionHandler 之間的映射。
<exception> 元素的屬性
屬性 |
描述 |
className |
指定和 <exception> 元素對(duì)應(yīng)的配置類。默認(rèn)值為 org.apache.struts.config.ExceptionConfig |
handler |
指定異常處理類。默認(rèn)值為 org.apache.struts.action.ExceptionHandler |
key |
指定在 Resource Bundle 中描述該異常的消息 key |
path |
指定當(dāng)異常發(fā)生時(shí)的轉(zhuǎn)發(fā)路徑 |
scope |
指定 ActionMessages 實(shí)例的存放范圍,可選值包括 request 和 session ,此項(xiàng)的默認(rèn)值為 request |
type |
指定所需處理的異常類的名字。此項(xiàng)是必需的 |
bundle |
指定 Resource Bundle |
?
·
6
。
<global-forwards>
元素
<global-forwards> 元素用來聲明全局的轉(zhuǎn)發(fā)關(guān)系。 <global-forwards> 元素由零個(gè)或者多個(gè) <forward> 元素組成。 <forward> 元素用于把一個(gè)邏輯名映射到特定的 URL 。通過這種方式, Action 類或者 JSP 文件無需要指定實(shí)際的 URL ,只要指定邏輯名就能實(shí)現(xiàn)請(qǐng)求轉(zhuǎn)發(fā)或者重定向,這可是減弱控制組件和視圖組件之間的耦合,并且有助于維護(hù) JSP 文件。
<forward> 元素的屬性
屬性 |
描述 |
className |
和 <forward> 元素對(duì)應(yīng)的配置類,默認(rèn)值為 org.apache.struts.action.ActionForard |
contextRelative |
如果此項(xiàng)為 true ,表示當(dāng) path 屬性以“ / ”開頭時(shí),給出的是相對(duì)于當(dāng)前上下文的 URL 。此項(xiàng)的默認(rèn)值為 false |
name |
轉(zhuǎn)發(fā)路徑的邏輯名。此項(xiàng)是必需的 |
path |
指定轉(zhuǎn)發(fā)或重定向的 URL 。此項(xiàng)是必需的,必需以“ / ”開頭。當(dāng) contextRelative 屬性為 false 時(shí),表示 URL 路徑相對(duì)于當(dāng)前應(yīng)用 (application-relative) ;當(dāng) contextRelative 屬性為 true 時(shí),表示 URL 路徑相對(duì)于當(dāng)前上下文 (context-relative) |
redirect |
當(dāng)此項(xiàng)為 true 時(shí),表示執(zhí)行重定向操作;當(dāng)此項(xiàng)為 false 時(shí),表示執(zhí)行請(qǐng)求轉(zhuǎn)發(fā)操作。此項(xiàng)默認(rèn)值為 false |
?
·
7
。
<action-mappings>
元素
<action-mappings> 元素包含零個(gè)或者多個(gè) <action> 元素。 <action> 元素描述了從特定的請(qǐng)求路徑到相應(yīng)的 Action 類的映射。
在 <action> 元素中可以包含多個(gè) <exception> 和 <forward> 子元素,他們分別配置局部的異常處理及請(qǐng)求轉(zhuǎn)發(fā)僅被當(dāng)前的 Action 所訪問。
在 <global-exceptions> 元素中定義的 <exception> 子元素代表全局的異常配置。在 <global-forwards> 元素中定義的 <forward> 子元素代表全局的請(qǐng)求轉(zhuǎn)發(fā)。在不同位置配置 <exception> 和 <forward> 元素的語法和屬性是一樣的。
<action> 元素的屬性
屬性 |
描述 |
attribute |
設(shè)置和 Action 關(guān)聯(lián)的 ActionForm Bean 在 request 或 session 范圍內(nèi)的屬性 key 。例如,假定 Form Bean 存在于 request 范圍內(nèi),并且此項(xiàng)為“ myBean ”,那么 request.getAttribute(“MyBean”) 就可以返回該 Bean 的實(shí)例。此項(xiàng)為可選項(xiàng)。 |
className |
和 <action> 元素對(duì)應(yīng)的配置元素。默認(rèn)值為 org.apache.struts.action.ActionMapping |
forward |
指定轉(zhuǎn)發(fā)的 URL 路徑 |
include |
指定包含的 URL 路徑 |
input |
指定包含輸入表單的 URL 路徑。當(dāng)表單驗(yàn)證失敗時(shí),將把請(qǐng)求轉(zhuǎn)發(fā)到該 URL |
name |
指定和該 Action 關(guān)聯(lián)的 ActionForm Bean 的名字。該名字必需在 <form-bean> 元素中定義過。此項(xiàng)是可選項(xiàng) |
path |
指定訪問 Action 的路徑,它以“ / ”開頭,沒有擴(kuò)展名 |
parameter |
指定 Action 的配置參數(shù)。在 Action 類的 execute() 方法中,可以調(diào)用 ActionMapping 對(duì)象的 getParameter() 方法來讀取該配置參數(shù) |
roles |
指定允許調(diào)用該 Action 的安全角色。多個(gè)角色之間以逗號(hào)隔開。在處理請(qǐng)求時(shí), RequestProcessor 會(huì)根據(jù)該配置項(xiàng)來決定用戶是否有調(diào)用 Action 的權(quán)限 |
scope |
指定 ActionForm Bean 的存在范圍,可選值為 request 和 session 。默認(rèn)值為 session |
type |
指定 Action 類的完整類名 |
unknown |
如果此項(xiàng)為 true ,表示可以處理用戶發(fā)出的所有無效的 Action URL 。默認(rèn)值為 false |
validate |
指定是否要先調(diào)用 ActionForm Bean 的 validate() 方法。默認(rèn)值為 true |
?
提示: <action> 元素的 forward 、 include 和 type 屬性相互排斥,也就是說只能設(shè)置其中的一項(xiàng)。 forward 屬性的作用和 org.apache.struts.actions.ForwardAction 類相同。 Include 屬性的作用和 org.apache.struts.actions.IncludeAction 類相同。
? 如果在 <action> 元素中定義了局部的 <forward> 元素,它的優(yōu)先級(jí)別高于全局的 <forward> 元素。
<Action> 的 forward 屬性和 <forward> 子元素是兩個(gè)不同的概念。 Forward 屬性指定和 path 屬性匹配的請(qǐng)求轉(zhuǎn)發(fā)路徑。
?
·
8
。
<controller>
元素
<controller> 元素用于配置 ActionServlet 。
<controller> 元素的屬性
屬性 |
描述 |
bufferSize |
指定上載文件的輸入緩沖的大小。該屬性為可選項(xiàng),默認(rèn)值為 4096 。 |
className |
指定和 <controller> 元素對(duì)應(yīng)的配置類。默認(rèn)值為 org.apache.struts.config.ControllerConfig 。 |
contentType |
指定響應(yīng)結(jié)果的內(nèi)容類型和字符編碼。該屬性為可選項(xiàng),默認(rèn)值為 text/html 。如果在 Action 和 JSP 網(wǎng)頁中也設(shè)置了內(nèi)容類型和字符編碼,將會(huì)覆蓋該設(shè)置 |
locale |
指定是否把 Locale 對(duì)象保存到當(dāng)前用戶的 Session 中。默認(rèn)值為 false |
processorClass |
指定負(fù)責(zé)處理請(qǐng)求的 Java 類的完整類名。默認(rèn)值為 org.apache.struts.action.RequestProcessor 。如果把此項(xiàng)設(shè)置為自定義的類,那么應(yīng)該保持該類擴(kuò)展了 org.apache.struts.action.RequestProcessor 類 |
tempDir |
指定處理文件上傳的臨時(shí)目錄。如果此項(xiàng)沒有設(shè)置,將采用 Servlet 容器為 Web 應(yīng)用分配的臨時(shí)工作目錄 |
nochache |
如果為 true ,在響應(yīng)結(jié)果中將加入特定的頭參數(shù): Pragma , Cache-Control 和 Expires ,防止頁面被存儲(chǔ)在客戶瀏覽器的緩存中。默認(rèn)值為 false |
?
如果應(yīng)用包含多個(gè)子應(yīng)用,可以在每個(gè)子應(yīng)用的 Struts 配置文件中配置 <controller> 元素。這樣,盡管這些子應(yīng)用共享同一個(gè) ActionServlet 對(duì)象,但是它們可以使用不同的 RequestProcessor 類。
?
·
9
。
<message-resources>
元素
<message-resources> 元素用來配置 Resource Bundle , Resource Bundle 用于存放本地化消息文本。
<message-resources> 元素的屬性
屬性 |
描述 |
className |
和 <message-resources> 元素對(duì)應(yīng)的配置類。默認(rèn)值為 org.apache.struts.config.MessageResourcesConfig |
factory |
指定消息資源的工廠類。默認(rèn)值為 org.apache.struts.util.PropertyMessageResourcesFactory 類 |
key |
指定 Resource Bundle 存放在 ServletContext 對(duì)象中時(shí)采用的屬性 key 。默認(rèn)值為由 Globals.MESSAGES_KEY 定義的字符串常量。只允許有一個(gè) Resource Bundle 采用默認(rèn)的屬性 key |
null |
指定 MessageResources 類如何處理未知的消息 key 。如果此項(xiàng)為 true ,將返回空字符串。如果此項(xiàng)為 false ,將返回類似“ ???global.label.missing??? ”的字符串。該屬性為可選項(xiàng),默認(rèn)值為 true |
parameter |
指定 Resource Bundle 的消息資源文件名。 |
?
許多 Struts 客戶化標(biāo)簽都通過 bundle 屬性來指定 Resource Bundle ,標(biāo)簽的 bundle 屬性和 <message-resources> 元素的 key 屬性匹配。
?
·
10
。
<plug-in>
元素
<plug-in> 元素用于配置 Struts 插件。
<plug-in> 元素的屬性
屬性 |
描述 |
className |
指定 Struts 插件類。插件類必需實(shí)現(xiàn) org.apache.struts.action.PlugIn 接口 |
?
·
11
。配置多應(yīng)用模塊
Struts 1.1 支持多應(yīng)用模塊,即同一個(gè)應(yīng)用包含多個(gè)子應(yīng)用,每個(gè)子應(yīng)用可以處理相關(guān)的一組功能。
所有的子應(yīng)用都共享同一個(gè) ActionServlet 實(shí)例,但每個(gè)子應(yīng)用都有單獨(dú)的配置文件。把應(yīng)用劃分成多個(gè)子應(yīng)用模塊包含一下步驟:
(1) ?????? 為每個(gè)子應(yīng)用傳見單獨(dú)的 Struts 配置文件。
(2) ?????? 在 web.xml 的 ActionServlet 的配置代碼中添加每個(gè)子應(yīng)用信息。
(3) ?????? 采用 <forward> 元素或 SwitchAction 類來實(shí)現(xiàn)子應(yīng)用之間的切換