亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

Struts2:Struts.xml配置文件詳解

2019-11-14 09:34:56
字體:
來源:轉載
供稿:網友

<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd" ><struts>    <!-- include節點是struts2中組件化的方式 可以將每個功能模塊獨立到一個xml配置文件中 然后用include節點引用 -->    <include file="struts-default.xml"></include>            <!-- package提供了將多個Action組織為一個模塊的方式        package的名字必須是唯一的 package可以擴展 當一個package擴展自        另一個package時該package會在本身配置的基礎上加入擴展的package        的配置 父package必須在子package前配置         name:package名稱        extends:繼承的父package名稱        abstract:設置package的屬性為抽象的 抽象的package不能定義action 值true:false        namespace:定義package命名空間 該命名空間影響到url的地址,例如此命名空間為/test那么訪問是的地址為http://localhost:8080/struts2/test/XX.action     -->    <package name="com.kay.struts2" extends="struts-default" namespace="/test">        <interceptors>            <!-- 定義攔截器                 name:攔截器名稱                class:攔截器類路徑             -->            <interceptor name="timer" class="com.kay.timer"></interceptor>            <interceptor name="logger" class="com.kay.logger"></interceptor>            <!-- 定義攔截器棧 -->            <interceptor-stack name="mystack">                <interceptor-ref name="timer"></interceptor-ref>                <interceptor-ref name="logger"></interceptor-ref>            </interceptor-stack>        </interceptors>                <!-- 定義默認的攔截器 每個Action都會自動引用         如果Action中引用了其它的攔截器 默認的攔截器將無效 -->        <default-interceptor-ref name="mystack"></default-interceptor-ref>                        <!-- 全局results配置 -->        <global-results>            <result name="input">/error.jsp</result>        </global-results>                <!-- Action配置 一個Action可以被多次映射(只要action配置中的name不同)             name:action名稱             class: 對應的類的路徑             method: 調用Action中的方法名        -->        <action name="hello" class="com.kay.struts2.Action.LoginAction">            <!-- 引用攔截器                name:攔截器名稱或攔截器棧名稱             -->            <interceptor-ref name="timer"></interceptor-ref>                    <!-- 節點配置                name : result名稱 和Action中返回的值相同                type : result類型 不寫則選用superpackage的type struts-default.xml中的默認為dispatcher             -->         <result name="success" type="dispatcher">/talk.jsp</result>         <!-- 參數設置              name:對應Action中的get/set方法          -->         <param name="url">http://www.sina.com</param>        </action>    </package></struts>補充:

struts.xml是我們在開發中利用率最高的文件,也是Struts2中最重要的配置文件。

一下分別介紹一下幾個struts.xml中常用到的標簽

1、<include>

利用include標簽,可以將一個struts.xml配置文件分割成多個配置文件,然后在struts.xml中使用<include>標簽引入其他配置文件。

比如一個網上購物程序,可以把用戶配置、商品配置、訂單配置分別放在3個配置文件user.xml、goods.xml和order.xml中,然后在struts.xml中將這3個配置文件引入:

struts.xml:

?
12345678910<?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPE struts PUBLIC    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"    "http://struts.apache.org/dtds/struts-2.0.dtd">  <struts>    <includefile="user.xml"/>    <includefile="goods.xml"/>    <includefile="order.xml"/></struts>

 

user.xml:

?
123456789101112131415<?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPE struts PUBLIC    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"    "http://struts.apache.org/dtds/struts-2.0.dtd">  <struts>    <packagename="wwfy"extends="struts-default">        <actionname="login"class="wwfy.user.LoginAction">            <!--省略Action其他配置-->        </action>        <actionname="logout"class="wwfy.user.LogoutAction">            <!--省略Action其他配置-->        </action>    </package></struts>

 

2、<constant>

在之前提到struts.PRoperties配置文件的介紹中,我們曾經提到所有在struts.properties文件中定義的屬性,都可以配置在struts.xml文件中。而在struts.xml中,是通過<constant>標簽來進行配置的:

?
123456789101112<?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPE struts PUBLIC    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"    "http://struts.apache.org/dtds/struts-2.0.dtd">  <struts>    <!--設置開發模式-->    <constantname="struts.devMode"value="true"/>    <!--設置編碼形式為GB2312-->    <constantname="struts.i18n.encoding"value="GB2312"/>    <!--省略其他配置信息--></struts>

 

3、<package>

1、包屬性介紹

在Struts2框架中是通過包來管理action、result、interceptor、interceptor-stack等配置信息的。包屬性如下:

屬性

是否必需

描述

name包名,作為其它包應用本包的標記
extends設置本包繼承其它包
namespace設置包的命名空間
abstact設置為抽象包

 

2、extends屬性的詳解

當一個包通過配置extends屬性繼承了另一個包的時候,該包將會繼承父包中所有的配置,包括action、result、interceptor等。由于包信息的獲取是按照配置文件的先后順序進行的,所以父包必須在子包之前被定義。通常我們配置struts.xml的時候,都繼承一個名為“struts-default.xml”的包,這是struts2中內置的包。

 

3、namespace的詳解

namespace主要是針對大型項目中Action的管理,更重要的是解決Action重名問題,因為不在同一個命名空間的Action可以使用相同的Action名的。

1)如果使用命名空間則URL將改變

比如我們有一下配置文件

?
12345<packagename="wwfy"extends="struts-default">    <actionname="login"class="wwfy.action.LoginAction">        <result>/success.jsp</result>    </action></package>

 

則此配置下的Action的URL為http://localhost:8080/login.action

 

假如為這個包指定了命名空間

?
12345<packagename="wwfy"extends="struts-default"namespace="/user">    <actionname="login"class="wwfy.action.LoginAction">        <result>/success.jsp</result>    </action></package>

 

則此配置下的Action的URL為http://localhost:8080/user/login.action

2)默認命名空間

Struts2中如果沒有為某個包指定命名空間,該包使用默認的命名空間,默認的命名空間總是""。

3)指定根命名空間

當設置了命名空間為“/”,即指定了包的命名空間為根命名空間時,此時所有根路徑下的Action請求都會去這個包中查找對應的資源信息。

假若前例中路徑為http://localhost:8080/login.action則所有http://localhost:8080/*.action都會到設置為根命名空間的包中尋找資源。

 

4、<action>與<result>

1、<action>屬性介紹

屬性名稱

是否必須

功能描述

name請求的Action名稱
classAction處理類對應具體路徑
method指定Action中的方法名
converter指定Action使用的類型轉換器

如果沒有指定method則默認執行Action中的execute方法。

2、<result>屬性介紹

屬性名稱

是否必須

功能描述

name對應Action返回邏輯視圖名稱,默認為success
type返回結果類型,默認為dispatcher

 

3、通配符的使用

隨著result的增加,struts.xml文件也會隨之變得越來越復雜。那么就可以使用通配符來簡化配置:

例如下面這個案例:

Action為Test.java

 

?
12345678910111213publicclassTest {    publicString test1(){        return"result1";    }          publicString test2(){        return"result2";    }          publicString test3(){        return"result3";    }}

 

struts.xml中配置為

?
12345<packagename="wwfy"extends="struts-default">    <actionname="test*"class="wwfy.action.test{1}">        <resultname="result{1}">/result{1}.jsp</result>    </action></package>

4、訪問Action方法的另一種實現方式

在Struts2中如果要訪問Action中的指定方法,還可以通過改變URL請求來實現,將原本的“Action名稱.action”改為“Action名稱!方法名稱.action”在struts.xml中就不需要指定方法名了。

 

5、<exception-mapping>與<global-exception-mapping>

這兩個標簽都是用來配置發生異常時對應的視圖信息的,只不過一個是Action范圍的,一個是包范圍的,當同一類型異常在兩個范圍都被配置時,Action范圍的優先級要高于包范圍的優先級.這兩個標簽包含的屬性也是一樣的:

屬性名稱

是否必須

功能描述

name用來表示該異常配置信息
result指定發生異常時顯示的視圖信息,這里要配置為邏輯視圖
exception指定異常類型

 

兩個標簽的示例代碼為:

?
123456789101112131415<?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPE struts PUBLIC    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"    "http://struts.apache.org/dtds/struts-2.0.dtd">  <struts>    <packagename="default"extends="struts-default">        <global-exception-mappings>            <exception-mappingresult="邏輯視圖"exception="異常類型"/>        </global-exception-mappings>        <actionname="Action名稱">            <exception-mappingresult="邏輯視圖"exception="異常類型"/>        </action>    </package></struts>

 

6、<default-class-ref>

當我們在配置Action的時候,如果沒有為某個Action指定具體的class值時,系統將自動引用<default-class-ref>標簽中所指定的類。在Struts2框架中,系統默認的class為ActionSupport,該配置我們可以在xwork的核心包下的xwork-default.xml文件中找到。

有特殊需要時,可以手動指定默認的class

?
1234567packagewwfy.action;  publicclassDefaultClassRef {    publicvoidexecute(){        System.out.println("默認class開始執行……");    }}

 

在struts.xml中配置

 

?
1234567891011121314<?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPE struts PUBLIC    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"    "http://struts.apache.org/dtds/struts-2.0.dtd">  <struts>    <packagename="wwfy"extends="struts-default">        <!-- 指定默認class為Test -->        <default-class-refclass="wwfy.action.DefaultClassRef"/>        <actionname="test1">            <result>/index.jsp</result>        </action>    </package></struts>

 

7、<default-action-ref>

如果在請求一個沒有定義過的Action資源時,系統就會拋出404錯誤。這種錯誤不可避免,但這樣的頁面并不友好。我們可以使用<default-action-ref>來指定一個默認的Action,如果系統沒有找到指定的Action,就會指定來調用這個默認的Action。

?
1234567891011121314<?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPE struts PUBLIC    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"    "http://struts.apache.org/dtds/struts-2.0.dtd">  <struts>    <packagename="wwfy"extends="struts-default">                  <default-action-refname="acctionError"></default-action-ref>        <actionname="acctionError">            <result>/jsp/actionError.jsp</result>        </action>    </package></struts>

 

8、<default-interceptor-ref>

該標簽用來設置整個包范圍內所有Action所要應用的默認攔截器信息。事實上我們的包繼承了struts-default包以后,使用的是Struts的默認設置。我們可以在struts-default.xml中找到相關配置:

?
1<default-interceptor-refname="defaultStack"/>

 

在實際開發過程中,如果我們有特殊的需求是可以改變默認攔截器配置的。當時一旦更改這個配置,“defaultStack”將不再被引用,需要手動最加。

 

9、<interceptors>

通過該標簽可以向Struts2框架中注冊攔截器或者攔截器棧,一般多用于自定義攔截器或攔截器棧的注冊。該標簽使用方法如下:

?
123456<interceptors>    <interceptorname="攔截器名"class="攔截器類"/>    <interceptor-stackname="攔截器棧名">        <interceptor-refname="攔截器名">    </interceptor-stack></interceptors>

 

10、<interceptor-ref>

通過該標簽可以為其所在的Action添加攔截器功能。當為某個Action單獨添加攔截器功能后,<default-interceptor-ref>中所指定的攔截器將不再對這個Action起作用。

 

11、<global-results>

該標簽用于設置包范圍內的全局結果集。在多個Action返回相同邏輯視圖的情況下,可以通過<global-results>標簽統一配置這些物理視圖所對應的邏輯視圖。

?
123456789101112<?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPE struts PUBLIC    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"    "http://struts.apache.org/dtds/struts-2.0.dtd">  <struts>    <packagename="wwfy"extends="struts-default">        <global-results>            <resultname="test">/index.jsp</result>        </global-results>    </package></struts>

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲天堂色网站| 91av在线免费观看视频| 欧美日韩精品国产| 国产精品网红福利| 国产精品国产亚洲伊人久久| 亚洲欧美国产高清va在线播| 精品网站999www| 日本精品视频在线| 久久综合久久八八| 中文国产亚洲喷潮| 久久久精品视频成人| 精品久久久久久久久久国产| 欧美成人精品一区| 欧美激情2020午夜免费观看| 姬川优奈aav一区二区| 97久久久免费福利网址| 正在播放亚洲1区| 日韩成人xxxx| 欧美性猛交xxxx乱大交3| 97久久精品人人澡人人爽缅北| 亚洲精品按摩视频| 日韩欧美亚洲综合| 九九精品在线播放| 性金发美女69hd大尺寸| 欧美精品一本久久男人的天堂| 欧美裸身视频免费观看| 日韩精品中文字幕视频在线| 国产欧美精品日韩精品| 欧美国产视频日韩| 91成人在线播放| 亚洲午夜精品久久久久久久久久久久| 亚洲欧美国产高清va在线播| 一区二区三区在线播放欧美| 日韩久久免费视频| 一区二区三区亚洲| 韩国v欧美v日本v亚洲| 亚洲国产精品高清久久久| 亚洲精品少妇网址| 亚洲а∨天堂久久精品9966| 91香蕉亚洲精品| 亚洲最大激情中文字幕| 2020欧美日韩在线视频| 69**夜色精品国产69乱| 成人免费网站在线| 欧美视频在线观看免费网址| 国产精品成人国产乱一区| 国产精品一区二区性色av| 亚洲大胆美女视频| 成人免费看黄网站| 国产精品福利在线观看网址| 日韩最新av在线| 中文字幕精品网| 久久免费少妇高潮久久精品99| 精品成人在线视频| 精品国产精品自拍| 亚洲第一国产精品| 亚洲精品美女网站| 中文字幕精品久久| 亚洲国产欧美一区二区三区同亚洲| 国产va免费精品高清在线观看| 亚洲国产精品电影| 亚洲成人xxx| 人体精品一二三区| 久久这里有精品视频| 美女扒开尿口让男人操亚洲视频网站| 亚洲美女www午夜| 68精品国产免费久久久久久婷婷| 国产精品99久久久久久久久久久久| 精品国产自在精品国产浪潮| 国产精品专区h在线观看| 日韩精品视频免费专区在线播放| 欧美天天综合色影久久精品| 成人性生交大片免费观看嘿嘿视频| 青青青国产精品一区二区| 欧美激情图片区| 久久手机精品视频| 亚洲人午夜精品| 成人高清视频观看www| 韩国v欧美v日本v亚洲| 亚洲精品wwwww| 国产精品偷伦免费视频观看的| 国产精品亚洲激情| 曰本色欧美视频在线| 欧美第一黄色网| 在线播放日韩欧美| 亚洲人av在线影院| 国产精品美女av| 欧美与黑人午夜性猛交久久久| 91豆花精品一区| 精品成人国产在线观看男人呻吟| 国产亚洲精品久久久久久牛牛| 亚洲v日韩v综合v精品v| 欧美一级片久久久久久久| 日韩欧美成人区| 亚洲黄色片网站| 最好看的2019的中文字幕视频| 亚洲成人aaa| 日韩av网站导航| 2021国产精品视频| 68精品久久久久久欧美| 久久视频精品在线| 亚洲97在线观看| 亚洲欧美日韩国产成人| 久久视频在线观看免费| 国产精品尤物福利片在线观看| 亚洲欧洲在线视频| 欧美中文字幕视频在线观看| 欧美精品videossex性护士| 国产在线拍揄自揄视频不卡99| 久久影院免费观看| 亚洲欧美精品一区二区| 国产精品扒开腿做爽爽爽的视频| 国产午夜精品全部视频播放| 日韩欧美精品在线观看| 成人xvideos免费视频| 亚洲国产古装精品网站| 欧美高清在线播放| 一区二区成人精品| 日韩日本欧美亚洲| 欧美整片在线观看| 日韩免费视频在线观看| 久久影视电视剧免费网站| 日韩在线高清视频| 欧美激情在线有限公司| 麻豆国产va免费精品高清在线| 色狠狠av一区二区三区香蕉蜜桃| 国产精品视频一区二区高潮| 欧美资源在线观看| 国产亚洲欧洲高清一区| 亚洲第一页自拍| 国产精品成人aaaaa网站| 青青草国产精品一区二区| 日韩欧美国产网站| 亚洲综合中文字幕68页| 国产精品国产自产拍高清av水多| 亚洲一区二区三区毛片| 久久夜色精品国产| 日韩亚洲成人av在线| 81精品国产乱码久久久久久| 在线一区二区日韩| 97视频在线观看亚洲| 97激碰免费视频| 国产午夜精品麻豆| 亚洲精品视频网上网址在线观看| 亚洲欧美日本伦理| 久久亚洲私人国产精品va| 国模私拍一区二区三区| 日韩动漫免费观看电视剧高清| 97免费在线视频| 91中文在线观看| 亚洲在线一区二区| 精品国产一区二区三区久久久狼| 欧美最顶级丰满的aⅴ艳星| 国语自产精品视频在线看一大j8| 精品日韩美女的视频高清| 亚洲精品电影网在线观看| 亚洲一级黄色av| 久久久噜噜噜久久| 亚洲天堂免费在线| 欧美成人激情图片网| 亚洲中国色老太| 黄色成人在线免费| 久久精品国产电影| 中文字幕日韩视频|