一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

7、struts.xml配置詳解(所有基本配置,包括通配符)

 hh3755 2013-07-31

7、struts.xml配置詳解

struts.xml是我們?cè)陂_發(fā)中利用率最高的文件,也是Struts2中最重要的配置文件。

一下分別介紹一下幾個(gè)struts.xml中常用到的標(biāo)簽

1、<include>

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

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

struts.xml:

1
2
3
4
5
6
7
8
9
10
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
<struts>
    <include file="user.xml"/>
    <include file="goods.xml"/>
    <include file="order.xml"/>
</struts>

 

user.xml:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
<struts>
    <package name="wwfy" extends="struts-default">
        <action name="login" class="wwfy.user.LoginAction">
            <!--省略Action其他配置-->
        </action>
        <action name="logout" class="wwfy.user.LogoutAction">
            <!--省略Action其他配置-->
        </action>
    </package>
</struts>

 

2、<constant>

在之前提到struts.properties配置文件的介紹中,我們?cè)?jīng)提到所有在struts.properties文件中定義的屬性,都可以配置在struts.xml文件中。而在struts.xml中,是通過<constant>標(biāo)簽來進(jìn)行配置的:

1
2
3
4
5
6
7
8
9
10
11
12
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
<struts>
    <!--設(shè)置開發(fā)模式-->
    <constant name="struts.devMode" value="true"/>
    <!--設(shè)置編碼形式為GB2312-->
    <constant name="struts.i18n.encoding" value="GB2312"/>
    <!--省略其他配置信息-->
</struts>

 

3、<package>

1、包屬性介紹

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

屬性

是否必需

描述

name 包名,作為其它包應(yīng)用本包的標(biāo)記
extends 設(shè)置本包繼承其它包
namespace 設(shè)置包的命名空間
abstact 設(shè)置為抽象包

 

2、extends屬性的詳解

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

 

3、namespace的詳解

namespace主要是針對(duì)大型項(xiàng)目中Action的管理,更重要的是解決Action重名問題,因?yàn)椴辉谕粋€(gè)命名空間的Action可以使用相同的Action名的。

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

比如我們有一下配置文件

1
2
3
4
5
<package name="wwfy" extends="struts-default">
    <action name="login" class="wwfy.action.LoginAction">
        <result>/success.jsp</result>
    </action>
</package>

 

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

 

假如為這個(gè)包指定了命名空間

1
2
3
4
5
<package name="wwfy" extends="struts-default" namespace="/user">
    <action name="login" class="wwfy.action.LoginAction">
        <result>/success.jsp</result>
    </action>
</package>

 

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

2)默認(rèn)命名空間

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

3)指定根命名空間

當(dāng)設(shè)置了命名空間為“/”,即指定了包的命名空間為根命名空間時(shí),此時(shí)所有根路徑下的Action請(qǐng)求都會(huì)去這個(gè)包中查找對(duì)應(yīng)的資源信息。

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

 

4、<action>與<result>

1、<action>屬性介紹

屬性名稱

是否必須

功能描述

name 請(qǐng)求的Action名稱
class Action處理類對(duì)應(yīng)具體路徑
method 指定Action中的方法名
converter 指定Action使用的類型轉(zhuǎn)換器

如果沒有指定method則默認(rèn)執(zhí)行Action中的execute方法。

2、<result>屬性介紹

屬性名稱

是否必須

功能描述

name 對(duì)應(yīng)Action返回邏輯視圖名稱,默認(rèn)為success
type 返回結(jié)果類型,默認(rèn)為dispatcher

 

3、通配符的使用

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

例如下面這個(gè)案例:

Action為Test.java

 

1
2
3
4
5
6
7
8
9
10
11
12
13
public class Test {
    public String test1(){
        return "result1";
    }
     
    public String test2(){
        return "result2";
    }
     
    public String test3(){
        return "result3";
    }
}

 

struts.xml中配置為

1
2
3
4
5
<package name="wwfy" extends="struts-default">
    <action name="test*" class="wwfy.action.test{1}">
        <result name="result{1}">/result{1}.jsp</result>
    </action>
</package>

4、訪問Action方法的另一種實(shí)現(xiàn)方式

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

 

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

這兩個(gè)標(biāo)簽都是用來配置發(fā)生異常時(shí)對(duì)應(yīng)的視圖信息的,只不過一個(gè)是Action范圍的,一個(gè)是包范圍的,當(dāng)同一類型異常在兩個(gè)范圍都被配置時(shí),Action范圍的優(yōu)先級(jí)要高于包范圍的優(yōu)先級(jí).這兩個(gè)標(biāo)簽包含的屬性也是一樣的:

屬性名稱

是否必須

功能描述

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

 

兩個(gè)標(biāo)簽的示例代碼為:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
<struts>
    <package name="default" extends="struts-default">
        <global-exception-mappings>
            <exception-mapping result="邏輯視圖" exception="異常類型"/>
        </global-exception-mappings>
        <action name="Action名稱">
            <exception-mapping result="邏輯視圖" exception="異常類型"/>
        </action>
    </package>
</struts>

 

6、<default-class-ref>

當(dāng)我們?cè)谂渲肁ction的時(shí)候,如果沒有為某個(gè)Action指定具體的class值時(shí),系統(tǒng)將自動(dòng)引用<default-class-ref>標(biāo)簽中所指定的類。在Struts2框架中,系統(tǒng)默認(rèn)的class為ActionSupport,該配置我們可以在xwork的核心包下的xwork-default.xml文件中找到。

有特殊需要時(shí),可以手動(dòng)指定默認(rèn)的class

1
2
3
4
5
6
7
package wwfy.action;
public class DefaultClassRef {
    public void execute(){
        System.out.println("默認(rèn)class開始執(zhí)行……");
    }
}

 

在struts.xml中配置

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
<struts>
    <package name="wwfy" extends="struts-default">
        <!-- 指定默認(rèn)class為Test -->
        <default-class-ref class="wwfy.action.DefaultClassRef"/>
        <action name="test1">
            <result>/index.jsp</result>
        </action>
    </package>
</struts>

 

7、<default-action-ref>

如果在請(qǐng)求一個(gè)沒有定義過的Action資源時(shí),系統(tǒng)就會(huì)拋出404錯(cuò)誤。這種錯(cuò)誤不可避免,但這樣的頁面并不友好。我們可以使用<default-action-ref>來指定一個(gè)默認(rèn)的Action,如果系統(tǒng)沒有找到指定的Action,就會(huì)指定來調(diào)用這個(gè)默認(rèn)的Action。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
<struts>
    <package name="wwfy" extends="struts-default">
         
        <default-action-ref name="acctionError"></default-action-ref>
        <action name="acctionError">
            <result>/jsp/actionError.jsp</result>
        </action>
    </package>
</struts>

 

8、<default-interceptor-ref>

該標(biāo)簽用來設(shè)置整個(gè)包范圍內(nèi)所有Action所要應(yīng)用的默認(rèn)攔截器信息。事實(shí)上我們的包繼承了struts-default包以后,使用的是Struts的默認(rèn)設(shè)置。我們可以在struts-default.xml中找到相關(guān)配置:

1
<default-interceptor-ref name="defaultStack"/>

 

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

 

9、<interceptors>

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

1
2
3
4
5
6
<interceptors>
    <interceptor name="攔截器名" class="攔截器類"/>
    <interceptor-stack name="攔截器棧名">
        <interceptor-ref name="攔截器名">
    </interceptor-stack>
</interceptors>

 

10、<interceptor-ref>

通過該標(biāo)簽可以為其所在的Action添加攔截器功能。當(dāng)為某個(gè)Action單獨(dú)添加攔截器功能后,<default-interceptor-ref>中所指定的攔截器將不再對(duì)這個(gè)Action起作用。

 

11、<global-results>

該標(biāo)簽用于設(shè)置包范圍內(nèi)的全局結(jié)果集。在多個(gè)Action返回相同邏輯視圖的情況下,可以通過<global-results>標(biāo)簽統(tǒng)一配置這些物理視圖所對(duì)應(yīng)的邏輯視圖。

1
2
3
4
5
6
7
8
9
10
11
12
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
<struts>
    <package name="wwfy" extends="struts-default">
        <global-results>
            <result name="test">/index.jsp</result>
        </global-results>
    </package>
</struts>

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多

    精品视频一区二区三区不卡| 国产亚洲精品久久久优势| 国产又粗又爽又猛又黄的| 国产精品一区二区有码| 国产精品日韩精品一区| 色哟哟在线免费一区二区三区| 亚洲中文字幕亲近伦片| 国产成人精品在线一区二区三区| 日韩中文字幕人妻精品| 国产专区亚洲专区久久| 亚洲中文字幕有码在线观看| 少妇一区二区三区精品| 精品香蕉一区二区在线| 91精品国产综合久久精品| 麻豆看片麻豆免费视频| 亚洲午夜福利不卡片在线| 欧美日本道一区二区三区| 大胆裸体写真一区二区| 欧美一区二区三区播放| 国产精品视频一级香蕉| 日韩一级免费中文字幕视频| 久久热中文字幕在线视频| 精品久久综合日本欧美| 国产成人精品在线播放| 国产精品美女午夜视频| 午夜传媒视频免费在线观看| 国产传媒欧美日韩成人精品| 日韩中文字幕视频在线高清版| 欧美一区二区不卡专区| 国产又爽又猛又粗又色对黄| 日韩欧美国产高清在线| 大香蕉久草网一区二区三区| 欧美不卡高清一区二区三区| 日韩欧美国产高清在线| 精品一区二区三区人妻视频| 女人高潮被爽到呻吟在线观看| 国产日韩精品激情在线观看| 在线观看国产成人av天堂野外| 欧美日韩综合免费视频| 大伊香蕉一区二区三区| 国产不卡最新在线视频|