struts配置引數詳解
Struts-config.xml配置檔案講解
1.<struts-config>元素:struts配置檔案的根元素。(和它對應的配置類為org.apache.struts.config.MouleConfig類)
8個子元素:(先後順序不能變)
<data-sources>,
<form-beans>,
<global-exceptions>,
<global-forwards>,
<action-mappings>,
<controller / >,
<message-resources / >,
<plug-in />。
2.<data-sources>元素:用來配置應用所需要的資料來源。
包含0,1或者多個<data-source>元素,該元素用於配置特定的資料來源。<data-source>元素包含多個<set-property>元素,<set-property>元素用於設定資料來源的各種屬性。
Example:
<span style="font-family:Comic Sans MS;font-size:14px;"> <data-sources>
<data-source type=”org.apache.commons.dbcp.BasicDataSource”>
<set-property property=”autoCommit” value=”true”/>
<set-property property=”description” value=”MYSQL Data Source”/>
<set-property property=”driverClass” value=”com.mysql.jdbc.Driver”/>
<set-property property=”maxCount” value=”10”/>
<set-property property=”minCount” value=”2”/>
<set-property property=”user” value=”root”/>
<set-property property=”password” value=””/>
<set-property property=”url” value=”jdbc:mysql://localhost:3306/資料庫名稱”/>
</data-source>
</data-sources></span>
配置了資料來源後,就可在Action類中訪問資料來源了
Javax.sql.DataSource dataSource = getDataSource(request);
Javax.sql.Connection myConnection = dataSource.getConnection();
配置多個資料來源:
<data-source key=”A” type=”org.apache.commons.dbcp.BasicDataSource”>
…property as before…
</data-source>
<data-source key=”B” type=”org.apache.commons.dbcp.BasicDataSource”>
…property as before…
</data-source>
在Action中取得資料來源:
dataSourceA = getDataSource(request,”A”);
dataSourceB = getDataSource(request,”B”);
3.<form-beans>元素:用來配置多個ActionForm Bean。
包含<form-bean>元素,該元素的屬性有:
1.className:指定和<form-bean>元素對應的配置類,預設值為org.apache.struts.config.FormBeanConfig。如果在這裡設定自定義類,則該類必須擴充套件FormBeanConfig類。
2.name:指定該ActionForm的唯一識別符號,整個struts框架利用該識別符號來引用這個bean。(必需的)
3.type:指定ActionForm類的完整實現類名(包括路徑)。(必需的)
Example1:
<form-bean name="UserLoginForm"
type="com.free.web.struts.form.UserLoginForm">
</form-bean>
Example2(動態ActionForm):
<!-- sample form bean descriptor for a DynaActionForm
<form-bean
name="logonForm"
type="org.apache.struts.action.DynaActionForm">
<form-property
name="username"
type="java.lang.String"/>
<form-property
name="password"
type="java.lang.String"/>
</form-bean>
4.<global-exceptions>元素:用於配置異常處理類。
包含多個<exception>元素:用來設定java異常和異常處理類org.apache.struts.action.ExceptionHandler之間的對映。
屬性:className:指定和<exception>元素對應的配置類。預設值為org.apache.struts.config.ExceptionConfig。
Handler:指定異常處理類。預設值為org.apache.struts.action.ExceptionHandler。
Key:指定在Resource Bundle中描述該異常的訊息key。
Path:指定當一場發生時的轉發路徑。
Scope:指定ActionMessages例項的存放範圍,可選值包括request和session。預設值為request。
Type:指定所需處理的異常類的名稱。(必需的)
Bundle:指定Resources Bundle。
Example:
<global-exceptions>
<exception
key="expired.password"
type="app.ExpiredPasswordException"
path="/changePassword.jsp"/>
</global-exceptions>
5.<global-forwards>元素:用來宣告全域性的轉發關係。
包含多個<forward>元素,<forward>元素用於把一個邏輯名對映到特定的URL。
屬性:className:指定和<forward>元素對應的配置類。預設值為org.apache.struts.action.ActionForward。
contextRelative:如果此項為true,表示當path屬性以”/”開頭時,給出的是相對於當前上下文的URL。預設值為false。
Name:轉發路徑的邏輯名。(必需的)
Path:指定轉發或重定向的URL。(必需的)而且必須以”/”開頭。contextRelative為true時,表示URL路徑相對於當前上下文(context-ralative); contextRelative為false時,表示URL路徑相對於當前應用(application-ralative);
Redirect:此項為true,執行重定向操作;為false,執行請求轉發操作。
Example:
<global-forwards>
<!-- Default forward to "Welcome" action -->
<!-- Demonstrates using index.jsp to forward -->
<forward
name="welcome"
path="/Welcome.do"/>
</global-forwards>
如果.jsp檔案把請求轉發給Action,可以使用一下程式碼:
<html:link forward=”forward1”>
如果Action把請求轉發給.jsp檔案,可以使用一下程式碼:
Return (mapping.findForward(“forward2”));
6.<action-mappings>元素:包含<action>元素,描述了從特定的請求路徑到相應的Action類的對映。
在<action>元素中可以包含多個<exception>和<forward>元素,它們分別配置區域性的異常
處理及請求轉發僅被當前的Action所訪問。
屬性:
(1) attribute: 設定和Action關聯的ActionForm Bean在request或session範圍內的屬性key。例如,假定Form Bean存在於request範圍內,並且此項設定為”myBean”,那麼request.getAttribute(“myBean”)就可以返回該Bean的例項。
(2) className:和<Action>元素對應的配置元素。預設值為org.apache.struts.action.ActionMapping。
(3) forward:指定轉發的URL路徑。
(4) includes:指定包含的URL路徑。
(5) input:指定包含輸入表單的URL路徑。當表單驗證失敗時,將把請求轉發到該URL。
(6) name:指定和該Action關聯的ActionForm Bean的名字。該名字必須在<form-bean>元素中一定過。
(7) path:指定訪問Action的路徑,它以”/”開頭,沒有副檔名。
(8) parameter:指定Action的配置引數。在Action類的execute()方法中,可以呼叫ActionMapping物件的getParamter()方法來讀取該配置引數。
(9) roles:指定允許呼叫該Action的安全形色。多個角色之間以逗號隔開。在處理請求時,RequestProcessor會根據該配置項來決定使用者是否有呼叫Action的許可權。
(10) scope:指定ActionForm的存在範圍。可選值為request和session。預設為session
(11) type:指定實現該Action類的真實類的路徑和名稱。(完整類名)
(12) unknown:如果此項為true,表示可以處理使用者發出的所有無效的ActionURL。預設值為false。
(13) validate:指定是否要先呼叫ActionForm Bean的validate()方法。預設為true
<Action>元素的forward,includes,type屬性相互排斥(即只能設定其中一項)。
Example:
<Action path=”/search”
type=”addressbook.actions.SearchAction”
name=”searchForm”
scope=”request”
validate=”true”
input=”/search.jsp”>
<forward name=”success” path=”/display.jsp”/>
</action>
注意:區域性<forward>元素和<exception>元素的優先順序大於全域性的。
7.<controller>元素:用於配置ActionServlet。
屬性:
(1) bufferSize:指定上載檔案的輸入緩衝的大小。預設值:4096
(2) calssName:指定和<controller>元素對應的配置類。預設值為org.apache.struts.config.ControllerConfig。
(3) contentType:指定響應結果的內容型別和字元編碼。預設值為text/html。如果在Action或jsp網頁中也設定了內容型別和字元編碼,將會覆蓋該設定。
(4) locale:指定是否把Locale物件儲存到當前使用者的session中。預設值false
(5) processorClass:指定負責處理請求的Java類的完整類名。預設值為org.apache.struts.action.RequestProcessor。或者擴充套件了該類的自定義類。
(6) tempDir:指定處理檔案上載的臨時檔案目錄。如果沒有設定此項,將採用Servlet容器為Web應用分配的臨時工作目錄。
(7) nochache:如果為true,在響應結果中將加入特定的頭引數:pragma,cache-control和Expires,防止頁面被儲存在客戶瀏覽器的快取中。預設值為false。
Example:
<controller
contentType=”text/html;charset=UTF-8”
locale=”true”
processorClass=”CustomRequestProcessor”/>
8.<message-resources>元素:用來配置resource bundle,resource bundle用於存放本地化訊息文字。
屬性:
(1) className:和.<message-resources>元素對應的配置類。預設值為org.apache.struts.config.MessageResourcesConfig
(2) factory:指定訊息資源的工廠類。預設值為org.apache.struts.util.property.MessageResourcesFacotry
(3) key:繫結在這個資源包中的ServletContext的屬性主鍵,預設值是Action.MESSAGES_KEY.
(4) Null:指定MessageResources類如何處理未知的訊息key。如果此項為true,將返回空字串。如果為false,將返回類似”???global.label.missing???”的字串,預設值為true
(5) Parameter:指定recourse bundle的訊息資原始檔名。該路徑相對於WEB-INF/classes而言。
Example:
<message-resources parameter="MessageResources" />
9.<plug-in>元素:用於配置struts外掛。
屬性:className:指定struts外掛類。該外掛類必須實現org.apache.struts.action.PlugIn介面。
Example:
(1)<plug-in className="org.apache.struts.tiles.TilesPlugin" >
<span style="font-family:Comic Sans MS;font-size:14px;"><plug-in className="org.apache.struts.tiles.TilesPlugin" ></span><span style="font-family: 'Comic Sans MS';font-size:14px; "> </span><wbr style="font-family: 'Comic Sans MS';font-size:14px; "><span style="font-family: 'Comic Sans MS';font-size:14px; "> </span><wbr style="font-family: 'Comic Sans MS';font-size:14px; "><span style="font-family: 'Comic Sans MS';font-size:14px; "> </span><wbr style="font-family: 'Comic Sans MS';font-size:14px; "><span style="font-family: 'Comic Sans MS';font-size:14px; "> </span><wbr style="font-family: 'Comic Sans MS';font-size:14px; "><span style="font-family: 'Comic Sans MS';font-size:14px; "> </span><!-- Path to XML definition file -->
<set-property property="definitions-config" value="/WEB-INF/tiles-defs.xml" />
<!-- Set Module-awareness to true -->
<set-property property="moduleAware" value="true" />
</plug-in></wbr></wbr></wbr></wbr>
(2)
<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
<set-property
property="pathnames"
value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml"/>
</plug-in>
struts-config.xml
- <action path="/login" type="com.jialin.LoginAction" name="userForm"
- scope="request" validate="true" attribute="uf">
- <forward name="success" path="/LoginSuccess.jsp" />
- <forward name="fail" path="/LoginFail.jsp" />
- </action>
其中 validate和attribut有什麼用?
validate,是否驗證表單資料。
我們在ActionForm中,重寫父類的validate方法,當從表單收集完資料放到ActionForm後,如果配置檔案中validate=true,將呼叫該方法,這裡我們可以做一些資料驗證。
- @Override
- public ActionErrors validate(ActionMapping mapping,
- HttpServletRequest request) {
- System.out.println("-------ActionForm.validate()從表單收集完資料放到ActionForm後做驗證--------");
- return super.validate(mapping, request);
- }
當然,如果系統安全性各方面要求不高,我們一般的驗證都是放在javascript裡的。
attribute
如果我們配置了attribute屬性,我們在jsp中要獲取actionform中的值得時候,form名就變為attribute設定的值。而不再是form-bean節點下 name屬性的值。
例如
- <struts-config>
- <!-- set ActionForm info-->
- <form-beans>
- <form-bean name="userForm" type="com.jialin.UserActionForm" />
- </form-beans>
- <action-mappings>
- <!-- Set path,action,actionform,scope,forward info -->
- <action path="/login" type="com.jialin.LoginAction" name="userForm"
- scope="request" validate="true" attribute="uf">
- <forward name="success" path="/LoginSuccess.jsp" />
- <forward name="fail" path="/LoginFail.jsp" />
- </action>
- </action-mappings>
- </struts-config>
如果我們要用el表示式取表單的值,不能使用${userForm.name},而是${uf.name}
ActionForm中還可以重寫父類的reset的方法,可以在把收集表單資料往ActionForm中放之前做一些處理
- @Override
- public void reset(ActionMapping mapping, HttpServletRequest request) {
- System.out.println("------------ActionForm.reset()<span style="font-family:Calibri;">可以</span><span lang="zh-CN" style="font-family:宋體;">在把收集表單資料往</span><span lang="en-US" style="font-family:Calibri;">ActionForm</span><span lang="zh-CN" style="font-family:宋體;">中放之前做一些處理</span>-----------");
- }
相關文章
- DataGuard引數配置詳解
- struts2 action中result引數詳解
- Mysql配置引數詳解(一)MySql
- Prometheus hashmod 配置引數詳解Prometheus
- oracle RMAN引數配置詳解Oracle
- struts.xml配置詳解XML
- Nginx 配置檔案引數詳解Nginx
- redis配置檔案引數詳解Redis
- Struts2 XML配置詳解XML
- compose配置檔案引數詳解
- sap入門--sap配置引數詳解
- Redis 主從配置和引數詳解Redis
- ansible.cfg 配置引數詳解
- Struts配置檔案詳細講解
- MongoDB啟動檔案配置引數詳解MongoDB
- MySQL8.0新增配置引數詳解MySql
- consul配置引數大全、詳解、總結
- redis配置檔案中各引數詳解Redis
- struts2.0(二)中struts.xml配置檔案詳解XML
- 監聽配置細節引數詳解兩則
- Linux網路卡配置檔案 引數詳解Linux
- MySQL配置檔案mysql.ini引數詳解MySql
- SwaggerAPI註解詳解,以及註解常用引數配置SwaggerAPI
- OPPO A57引數配置詳解樣 OPPO A57引數與圖賞
- ajax 引數詳解
- DockerFile引數詳解Docker
- dd引數詳解
- Mysqldump引數詳解MySql
- vmstat 引數詳解
- Axios 請求配置引數詳解以及全域性配置示例iOS
- 諾基亞6引數配置詳解 Nokia 6配置怎麼樣
- Struts2中 Result型別配置詳解型別
- Struts2的properties配置檔案詳解
- maven-compiler-plugin外掛引數配置詳解MavenCompilePlugin
- 榮耀9配置怎麼樣 榮耀9引數詳解
- php-fpm啟動引數及重要配置詳解PHP
- notes.ini檔案的配置引數詳解
- JVM記憶體引數詳解及其配置調優JVM記憶體