Struts的核心是struts-config.xml配置文件,在這個文件里描述了所有的Struts組件。在這里包括配置主要的組件及次要的組件,下面是struts-config.xml包含主要元素的內容:
一、????struts-config.xml的主要元素:
<?xml version=”1.0” encoding=”ISO-8859-1”?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN"
"http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd">
<struts-config>???
???<data-sources>
???????<data-source>
???????</data-source>
???</data-sources>
???<form-beans>
???????<form-bean?/>
???</form-beans>
???<global-forwards>
???????<forward?/>
???</global-forwards>
???<action-mappings>
???????<action?/>
???</action-mappings>
???<controller?/>
???<message-resources?/>
???<plug-in?/>
</struts-config>
注意:以上各元素的順序是非常重要的,你的struts-config.xml配置文件必須按照這個順序進行配置,否則在你的容器啟動的時候就會出錯。
二、????struts-config.xml的子元素:
1.<icon / >子元素
???它包含<small-icon / >及<large-icon / >,它的作用是圖形化其父元素,<small-icon/>的內容是一個16x16的圖像文件,而<large-icon/>的內容是一個32x32的圖像文件。如下例子:
<icon>
??<small-icon>
????/images/smalllogo.gif
??</small-icon>
??<large-icon>
????/images/largelogo.gif
??</large-icon>
</icon>
2.<display-name / >子元素
???它提供對父元素的短文字(short textual)描述信息,如下:
<display-name>
???short?textual?discription?of?its?parent?element
</display-name>
3.<description / >子元素
???它提供對父元素的完全(full-length textual)的描述信息,如下:
<description>
???full-length?textual?discription?of?its?parent?element
</description>
4.<set-property / >子元素
???????它用來設置它的父元素中設定的JavaBean的屬性值,它一般用在指定的GenericDataSource 屬性,擴展的ActionMappings以及擴展的 global forwards。如下:
<set-property?
??property="name?of?bean?property"???????
value="value?of?bean?property"?/>
例如:
<set-property?property="driverClass"?value="org.gjt.mm.mysql.Driver"?/>
<set-property?property="user"?value="admin"/>
<set-property?property="maxCount"?value="4"/>
<set-property?property="minCount"?value="2"/>?
<set-property?property="password"?value=""/>?
<set-property?property="url"?value="jdbc:mysql://localhost:3306/struts"/>
三、????配置JDBC數據源
其配置形式如下:
<data-sources>
<data-source>
<set-property?property="driverClass"?value="fully?qualified?path?of?JDBC?driver"/>
<set-property?property="url"?value="data?source?URL"/>
<set-property?property=”mincount”?value="the?minimum?number?of?connections?to?open"/>
<set-property?property="password"?value="the?password?used?to?create?connections"/>
<set-property?property="user"?value="the?username?used?to?create?connections"/>
</data-source>
</data-sources>
<data-source>的屬性及其描述信息如下:
屬??性????描 述 信 息
Key????綁定在ServletContext上的DataSource實例的索引鍵,若不設定則缺省為Action.DATA_SOURCE_KEY,如果在應用程序中有多于一個的DataSource,則必須設置Key的值。
DriverClass????所用的JDBC驅動類(必須的)如:com.microsoft.jdbc.sqlserver.SQLServerDriver
url????所用的JDBC的URL(必須的)如:jdbc:microsoft:sqlserver://xg088:1433
MaxCount????同時打開的最大連結數,缺省值為2(可選的)
MinCount????同時打開的最小連結數,缺省值為1(可選的)
User????連結到數據庫的用戶名(必須的)
Password????連結到數據庫的密碼(必須的)
Description????關于DataSource的描述信息(可選的)
ReadOnly????如果設為true,則表示該連結是只讀的,缺省為false。(可選的)
LoginTimeout????創建連結的最大允許時間,以秒為單位。(可選的)
AutoCommit????如果為true,則每次execute之后會強制回滾。缺省為true。(可選的)
舉例說明:
<data-sources>
????<data-source>
????<set-property?property=”key”?value=”?value="WILEY_DATA_SOURCE"?/>
????<set-property?property="driverClass"?value="org.gjt.mm.mysql.Driver"?/>
????<set-property?property="url"?value="jdbc:mysql://localhost/wileyusers"?/>
????<set-property?property="maxCount"?value="5"/>
????<set-property?property="minCount"?value="1"/>
????<set-property?property="user"?value="sa"/>
????<set-property?property="password"?value="yourpassword"/>
?????</data-source>
</data-sources>
四、????配置FormBean
<form-bean / >用來定義將要綁定到Action的FormBean的實例。語法如下:
<form-beans>
???<form-bean?name="name?used?to?uniquely?identify?a?FormBean"?type="fully?qualified?class?name?of?FormBean"/>
</form-beans>
例:
<form-beans>
????<form-bean?name="lookupForm"?type="wiley.LookupForm"?/>
</form-beans>
五、????配置全局轉發
全局轉發可以定義幾個<forward/>子元素,struts首先會在<action-mappings>元素中找對應的<forward>,若找不到,則到全局轉發配置中找。語法如下:
<global-forwards>
????<forward?name="unique?target?identifier"? path="context-relative?path?to?targetted?resource?"/>
</global-forwards>
除了name及path屬性之外,還有一個redirect屬性,如果redirect設為true的時候,則用HttpServletResponse.sendRedirect()方法,否則用RequestDispatcher.forward()方法,缺省為false。
注:如果為true,則用HttpServletResponse.sendRedirect()方法,此時存儲在原來的HttpServletRequest中的值將會丟失。
例子:
<global-forwards>
????<forward?name="success"?path="/welcome.jsp"/>
????<forward?name="failure"?path="/index.jsp"/>
</global-forwards>
六、????配置<action-mappings>
它可以定義幾個<action / >子元素,它主要是定義Action實例到ActionServlet類中,語法如下:
<action-mappings>
????<action?path="context-relative?path?mapping?action?to?a?request" type="fully?qualified?class?name?of?the?Action?class" name="the?name?of?the?form?bean?bound?to?this?Action">
????<forward?name="forwardname1"?path="context-relative?path"/>
????<forward?name="forwardname2"?path="context-relative?path"/>
????</action>
</action-mappings>
<action/>屬性及其描述信息如下:
屬??性????描 述 信 息
Path????在瀏覽器的URL中輸入的字符(必須的)
Type????連結到本映射的Action的全稱(可選的)
Name????與本操作關聯的Action Bean在<form-bean/>中定義name名(可選的)
Scope????指定ActionForm Bean的作用域(session和request),缺省為session。(可選的)
Input????當Bean發生錯誤時返回的控制。(可選的)
ClassName????指定一個調用這個Action類的ActionMapping類的全名。缺省用org.apache.struts.action.ActionMapping,(可選的)
Forward????指定處理相應請求所對應的JSP頁面。(可選的)
Include????如果沒有forward的時候,它起forward的作用。(可選的)
Validate????若為true,則會調用ActionForm的validate()方法,否則不調用,缺省為true。(可選的)
例子:
<action-mappings>
<action?path="/lookupAction" ?type="wiley.LookupAction" name="LookupForm" scope="request" validate="true" input="/index.jsp">
<forward?name="success"?path="/quote.jsp"/>
<forward?name="faliue"?path="/index.jsp"/>
</action>
</action-mappings>
<action??path="/customer/customer"?//路徑的匹配模式??????????????????????????????????????
type="com.demo.order.actions.CustomerAction"???//滿足上面路徑模式的提交的請求有這個Action來響應,即有它來處理
name="customerForm"?//上面的路徑提交的數據存放在這個formBean給上面的Action處理
parameter="method"??
input="add"
unknown="false"
validate="true"?//把數據保存到FormBean時是否調用上面那個FormBean的validate函數進行數據驗證!
>
<forward??name="view"?path="model.customer.view" />?//Action處理完后通過Forward?name后面的字符串來跳轉到它相應的path指定的頁面
<forward??name="add"?path="model.customer.add" />
<forward??name="list"?path="model.customer.list" />
</action>
七、????配置RequestProcessor
在struts-config.xml文件中用<controller/>子元素來定義RequestProcessor,其語法格式如下:
<controller processorClass="fully qualified class name" />
<controller />元素屬性及其描述信息如下:
屬??性????描??述
processorClass????指定自定義的RequestProcessor類的全名
BufferSize????指定用來下載所用的緩存大小。缺省是4096字節。
contentType????定義response文本類型,缺省是text/html
Debug????定義當前系統的除錯級別,缺省是0
Locale????如果是true,則在用戶的session中存放Locale對象,缺省為true
maxFileSize????指定下載文件最大的大小。缺省是250M
multipartClass????指定去代替org.apache.struts.upload.DiskMultipartRequestHandler類的類的全名。
Nocache????如果是true,則會關閉每個response的緩存功能。缺省是false
TempDir????指定上載文件所用的臨時目錄。缺省值由容器決定
例子:
①?<controller?processorClass="wiley.WileyRequestProcessor"?/>
②?<controller
????contentType="text/html;charset=UTF-8"
????debug="3"
????locale="true"
????nocache="true"
????processorClass="org.apache.struts.action.RequestProcessor"/>
八、????配置Message Resources
在struts-config.xml文件中用<message-resources />元素來定義消息資源。其語法如下:
<message-resources??parameter="wiley.ApplicationResources"/>
<message-resources?/>
元素屬性及其描述信息如下:
屬??性????描??述
Parameter????給定資源文件全名
ClassName????定義處理消息資源的類名的全名,缺省是org.apache.struts.config.MessageResourcesConfig
Factory????定義MessageResourcesFactory類的全名,缺省是org.apache.struts.util.property.MessageResourcesFacotry
Key????定義綁定在這個資源包中的ServletContext的屬性主鍵,缺省值是Action.MESSAGES_KEY.
Null????如果為true,則找不到消息key時,則返回null,缺省是true.
例子:
①?<message-resources?parameter="wiley.ApplicationResources"/>
②?<message-resources
????parameter="StorefrontMessageResources"
????null="false"/>
<message-resources
????key="IMAGE_RESOURCE_KEY"
????parameter="StorefrontImageResources"
????null="false"/>
注意:設定key的目的如下:
<html:img?altKey="navbar.home.image.alt"?bundle="IMAGE_RESOURCE_KEY"?pageKey="navbar.home.image"?width="125"?height="15"?border="0"/>
這里說明要到StorefrontImageResources.properties資源文件中找主鍵值是”navbar.home.image”所對應的值。
這里StorefrontImageResources.properties的內容如下:
……
navbar.home.image=/images/home.gif
navbar.home.image.alt=Home
……
此處navbar.home.image.alt說明的和<img alt=”Home”……/>一樣。
九、????配置Plug-in
詳細學習可參考:
http://m.tkk7.com/yesjoy/articles/106419.html配置Plug-in如下:
<plug-in?className="wiley.WileyPlugin"/>
也可如下:
<plug-in?className="com.oreilly.struts.storefront.service.memory.StorefrontMemoryDatabasePlugIn">
??<set-property?property="pathname"?value="/WEB-INF/database.xml"/>
</plug-in>
posted on 2006-03-19 13:56
★yesjoy★ 閱讀(692)
評論(0) 編輯 收藏 所屬分類:
Structs學習