日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

struts2配置详解(struts.xml配置详解)

發(fā)布時間:2024/9/27 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 struts2配置详解(struts.xml配置详解) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

本文轉(zhuǎn)自:http://www.cnblogs.com/fmricky/archive/2010/05/20/1740479.html

?

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

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

1、<include>

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

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

struts.xml:

view sourceprint?
01<?xml?version="1.0"?encoding="UTF-8"?>
02<!DOCTYPE struts PUBLIC
03????"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
04????"http://struts.apache.org/dtds/struts-2.0.dtd">
05??
06<struts>
07????<include?file="user.xml"/>
08????<include?file="goods.xml"/>
09????<include?file="order.xml"/>
10</struts>

?

user.xml:

view sourceprint?
01<?xml?version="1.0"?encoding="UTF-8"?>
02<!DOCTYPE struts PUBLIC
03????"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
04????"http://struts.apache.org/dtds/struts-2.0.dtd">
05??
06<struts>
07????<package?name="wwfy"?extends="struts-default">
08????????<action?name="login"?class="wwfy.user.LoginAction">
09????????????<!--省略Action其他配置-->
10????????</action>
11????????<action?name="logout"?class="wwfy.user.LogoutAction">
12????????????<!--省略Action其他配置-->
13????????</action>
14????</package>
15</struts>

?

2、<constant>

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

view sourceprint?
01<?xml?version="1.0"?encoding="UTF-8"?>
02<!DOCTYPE struts PUBLIC
03????"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
04????"http://struts.apache.org/dtds/struts-2.0.dtd">
05??
06<struts>
07????<!--設(shè)置開發(fā)模式-->
08????<constant?name="struts.devMode"?value="true"/>
09????<!--設(shè)置編碼形式為GB2312-->
10????<constant?name="struts.i18n.encoding"?value="GB2312"/>
11????<!--省略其他配置信息-->
12</struts>

?

3、<package>

1、包屬性介紹

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

屬性

是否必需

描述

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

?

2、extends屬性的詳解

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

?

3、namespace的詳解

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

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

比如我們有一下配置文件

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

?

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

?

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

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

?

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

2)默認命名空間

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

3)指定根命名空間

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

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

?

4、<action>與<result>

1、<action>屬性介紹

屬性名稱

是否必須

功能描述

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

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

2、<result>屬性介紹

屬性名稱

是否必須

功能描述

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

?

3、通配符的使用

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

例如下面這個案例:

Action為Test.java

?

view sourceprint?
01public?class?Test {
02????public?String test1(){
03????????return?"result1";
04????}
05??????
06????public?String test2(){
07????????return?"result2";
08????}
09??????
10????public?String test3(){
11????????return?"result3";
12????}
13}

?

struts.xml中配置為

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

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

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

?

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

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

屬性名稱

是否必須

功能描述

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

?

兩個標簽的示例代碼為:

view sourceprint?
01<?xml?version="1.0"?encoding="UTF-8"?>
02<!DOCTYPE struts PUBLIC
03????"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
04????"http://struts.apache.org/dtds/struts-2.0.dtd">
05??
06<struts>
07????<package?name="default"?extends="struts-default">
08????????<global-exception-mappings>
09????????????<exception-mapping?result="邏輯視圖"?exception="異常類型"/>
10????????</global-exception-mappings>
11????????<action?name="Action名稱">
12????????????<exception-mapping?result="邏輯視圖"?exception="異常類型"/>
13????????</action>
14????</package>
15</struts>

?

6、<default-class-ref>

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

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

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

?

在struts.xml中配置

?

view sourceprint?
01<?xml?version="1.0"?encoding="UTF-8"?>
02<!DOCTYPE struts PUBLIC
03????"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
04????"http://struts.apache.org/dtds/struts-2.0.dtd">
05??
06<struts>
07????<package?name="wwfy"?extends="struts-default">
08????????<!-- 指定默認class為Test -->
09????????<default-class-ref?class="wwfy.action.DefaultClassRef"/>
10????????<action?name="test1">
11????????????<result>/index.jsp</result>
12????????</action>
13????</package>
14</struts>

?

7、<default-action-ref>

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

view sourceprint?
01<?xml?version="1.0"?encoding="UTF-8"?>
02<!DOCTYPE struts PUBLIC
03????"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
04????"http://struts.apache.org/dtds/struts-2.0.dtd">
05??
06<struts>
07????<package?name="wwfy"?extends="struts-default">
08??????????
09????????<default-action-ref?name="acctionError"></default-action-ref>
10????????<action?name="acctionError">
11????????????<result>/jsp/actionError.jsp</result>
12????????</action>
13????</package>
14</struts>

?

8、<default-interceptor-ref>

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

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

?

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

?

9、<interceptors>

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

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

?

10、<interceptor-ref>

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

?

11、<global-results>

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

view sourceprint?
01<?xml?version="1.0"?encoding="UTF-8"?>
02<!DOCTYPE struts PUBLIC
03????"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
04????"http://struts.apache.org/dtds/struts-2.0.dtd">
05??
06<struts>
07????<package?name="wwfy"?extends="struts-default">
08????????<global-results>
09????????????<result?name="test">/index.jsp</result>
10????????</global-results>
11????</package>
12</struts>

總結(jié)

以上是生活随笔為你收集整理的struts2配置详解(struts.xml配置详解)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。